Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
So laden Sie Daten aus Amazon EMR:
Sie können den COPY-Befehl verwenden, um Daten parallel aus einem Amazon-EMR-Cluster zu laden, der für das Schreiben von Textdateien in das Hadoop Distributed File System (HDFS) des Clusters in Form von Dateien mit fester Breite, zeichenbegrenzten Dateien, CSV-Dateien oder JSON-Dateien konfiguriert wurde.
Prozess zum Laden von Daten aus Amazon EMR
In diesem Abschnitt wird das Laden von Daten aus einem Amazon-EMR-Cluster beschrieben. In den folgenden Abschnitten finden Sie detaillierte Anweisungen für die einzelnen Schritte.
-
Schritt 1: Konfigurieren von IAM-Berechtigungen
Die Benutzer, die den Amazon-EMR-Cluster erstellen und den COPY-Befehl von Amazon Redshift ausführen, müssen die notwendigen Berechtigungen besitzen.
-
Schritt 2: Erstellen eines Amazon-EMR-Clusters
Konfigurieren Sie den Cluster für die Ausgabe von Textdateien zum Hadoop Distributed File System (HDFS). Sie benötigen die Amazon EMR-Cluster-ID und den öffentlichen Haupt-DNS des Clusters (den Endpunkt für die EC2 Amazon-Instance, die den Cluster hostet).
-
Der öffentliche Schlüssel ermöglicht den Knoten des Amazon-Redshift-Clusters die Herstellung von SSH-Verbindungen zu den Hosts. Sie verwenden die IP-Adresse der einzelnen Cluster-Knoten, um die Host-Sicherheitsgruppen zu konfigurieren, damit diese den Zugriff von Ihrem Amazon-Redshift-Cluster unter Verwendung dieser IP-Adressen gestatten.
-
Sie fügen den öffentlichen Schlüssel des Amazon-Redshift-Clusters zur Datei des Hosts hinzu, die die autorisierten Schlüssel enthält, damit der Host den Amazon-Redshift-Cluster erkennt und die SSH-Verbindung akzeptiert.
-
Ändern Sie die Sicherheitsgruppen der Amazon-EMR-Instance, indem Sie Eingaberegeln für die Akzeptierung der Amazon-Redshift-IP-Adressen hinzufügen.
-
Schritt 6: Ausführen des COPY-Befehls, um die Daten zu laden
Führen Sie den COPY-Befehl aus einer Amazon-Redshift-Datenbank aus, um die Daten in eine Amazon-Redshift-Tabelle zu laden.
Schritt 1: Konfigurieren von IAM-Berechtigungen
Die Benutzer, die den Amazon-EMR-Cluster erstellen und den COPY-Befehl von Amazon Redshift ausführen, müssen die notwendigen Berechtigungen besitzen.
So konfigurieren Sie IAM-Berechtigungen
-
Fügen Sie dem Benutzer, der den Amazon-EMR-Cluster erstellt, die folgenden Berechtigungen hinzu.
ec2:DescribeSecurityGroups ec2:RevokeSecurityGroupIngress ec2:AuthorizeSecurityGroupIngress redshift:DescribeClusters
-
Fügen Sie der IAM-Rolle oder dem Benutzer, die bzw. der den COPY-Befehl ausführt, die folgende Berechtigung hinzu.
elasticmapreduce:ListInstances
-
Fügen Sie der IAM-Rolle des Amazon-EMR-Clusters die folgende Berechtigung hinzu.
redshift:DescribeClusters
Schritt 2: Erstellen eines Amazon-EMR-Clusters
Der COPY-Befehl lädt Daten aus Dateien im Hadoop Distributed File System (HDFS) von Amazon EMR. Konfigurieren Sie beim Erstellen des Amazon-EMR-Clusters den Cluster für die Ausgabe von Datendateien an das HDFS des Clusters.
So erstellen Sie einen Amazon-EMR-Cluster:
-
Erstellen Sie einen Amazon EMR-Cluster in derselben AWS Region wie der Amazon Redshift Redshift-Cluster.
Wenn sich der Amazon-Redshift-Cluster in einer VPC befindet, muss sich der Amazon-EMR-Cluster in derselben VPC-Gruppe befinden. Wenn der Amazon Redshift Redshift-Cluster den EC2 -Classic-Modus verwendet (d. h., er befindet sich nicht in einer VPC), muss der Amazon EMR-Cluster auch den -Classic-Modus verwenden. EC2 Weitere Informationen finden Sie unter Managing Clusters in Virtual Private Cloud (VPC) (Verwalten von Clustern in Virtual Private Cloud (VPC)) im Amazon-Redshift-Verwaltungshandbuch.
-
Konfigurieren Sie den Cluster für die Ausgabe von Datendateien an das HDFS des Clusters. Die HDFS-Dateinamen dürfen keine Sternchen (*) oder Fragezeichen (?) enthalten.
Wichtig
Die Dateinamen dürfen keine Sternchen (*) oder Fragezeichen (?) enthalten.
-
Geben Sie No (Nein) für die Option Auto-terminate (Automatisches Beenden) in der Amazon-EMR-Clusterkonfiguration an, sodass der Cluster während der Ausführung des COPY-Befehls verfügbar bleibt.
Wichtig
Wenn eine der Datendateien vor Abschluss von COPY geändert oder gelöscht wird, kann dies zu unerwarteten Ergebnissen führen. Es ist auch möglich, dass die COPY-Operation fehlschlägt.
-
Notieren Sie sich die Cluster-ID und den öffentlichen Haupt-DNS (den Endpunkt für die EC2 Amazon-Instance, die den Cluster hostet). Diese Informationen werden in späteren Schritten benötigt.
Schritt 3: Abrufen des öffentlichen Schlüssels des Amazon-Redshift-Clusters und der IP-Adressen der Cluster-Knoten
Sie verwenden die IP-Adresse der einzelnen Cluster-Knoten, um die Host-Sicherheitsgruppen zu konfigurieren, damit diese den Zugriff von Ihrem Amazon-Redshift-Cluster unter Verwendung dieser IP-Adressen gestatten.
So rufen Sie den öffentlichen Schlüssel des Amazon-Redshift-Clusters und die IP-Adressen der Cluster-Knoten für Ihren Cluster über die Konsole ab:
-
Greifen Sie auf die Managementkonsole von Amazon Redshift zu.
-
Wählen Sie im Navigationsbereich den Link Clusters (Cluster) aus.
-
Wählen Sie Ihren Cluster aus der Liste aus.
-
Suchen Sie die Gruppe SSH Ingestion Settings (SSH-Eingangseinstellungen).
Notieren Sie sich die Informationen unter Cluster Public Key (Öffentlicher Schlüssel des Clusters) und Node IP addresses (Knoten-IP-Adressen). Diese Informationen werden in späteren Schritten verwendet.
Sie verwenden die privaten IP-Adressen in Schritt 3, um den EC2 Amazon-Host so zu konfigurieren, dass er die Verbindung von Amazon Redshift akzeptiert.
Um den öffentlichen Schlüssel des Clusters und die IP-Adressen der Cluster-Knoten für Ihren Cluster über die Amazon-Redshift-CLI abzurufen, führen Sie den Befehl describe-clusters aus. Zum Beispiel:
aws redshift describe-clusters --cluster-identifier <cluster-identifier>
Die Antwort enthält einen ClusterPublicKey Wert und die Liste der privaten und öffentlichen IP-Adressen, ähnlich der folgenden:
{ "Clusters": [ { "VpcSecurityGroups": [], "ClusterStatus": "available", "ClusterNodes": [ { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "LEADER", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-0", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-1", "PublicIPAddress": "10.nnn.nnn.nnn" } ], "AutomatedSnapshotRetentionPeriod": 1, "PreferredMaintenanceWindow": "wed:05:30-wed:06:00", "AvailabilityZone": "us-east-1a", "NodeType": "dc2.large", "ClusterPublicKey": "ssh-rsa AAAABexamplepublickey...Y3TAl Amazon-Redshift", ... ... }
Um den öffentlichen Schlüssel des Clusters und die IP-Adressen der Cluster-Knoten für Ihren Cluster über die Amazon-Redshift-API abzurufen, verwenden Sie die Aktion DescribeClusters
. Weitere Informationen finden Sie unter describe-clusters im Amazon Redshift CLI Guide oder DescribeClustersim Amazon Redshift API Guide.
Schritt 4: Fügen Sie den öffentlichen Schlüssel des Amazon Redshift Redshift-Clusters zur Datei mit den autorisierten Schlüsseln jedes EC2 Amazon-Hosts hinzu
Sie fügen den öffentlichen Schlüssel des Clusters der Datei mit den autorisierten Schlüsseln der einzelnen Hosts für alle Knoten des Amazon-EMR-Clusters hinzu, damit die Hosts Amazon Redshift erkennen und die SSH-Verbindung akzeptieren.
So fügen Sie den öffentlichen Schlüssel des Amazon-Redshift-Clusters zur Datei des Hosts mit den autorisierten Schlüsseln hinzu:
-
Greifen Sie über eine SSH-Verbindung auf den Host zu.
Informationen zum Herstellen einer Verbindung mit einer Instance mithilfe von SSH finden Sie unter Connect to Your Instance im EC2 Amazon-Benutzerhandbuch.
-
Kopieren Sie den öffentlichen Amazon-Redshift-Schlüssel aus der Konsole oder aus dem CLI-Antworttext.
-
Kopieren Sie den Inhalt des öffentlichen Schlüssels in die Datei
/home/<ssh_username>/.ssh/authorized_keys
auf dem Host. Kopieren Sie die gesamte Zeichenfolge einschließlich des Präfixssh-rsa
und des SuffixAmazon-Redshift
. Beispiel:ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift
Schritt 5: Konfigurieren der Hosts, sodass sie alle IP-Adressen des Amazon-Redshift-Clusters akzeptieren
Um eingehenden Datenverkehr für die Host-Instances zuzulassen, bearbeiten Sie die Sicherheitsgruppe und fügen jedem Amazon-Redshift-Clusterknoten eine Inbound-Regel hinzu. Wählen Sie für Type SSH mit TCP-Protokoll auf Port 22 aus. Geben Sie für Source (Quelle) die privaten IP-Adressen der Amazon-Redshift-Cluster-Knoten ein, die Sie in Schritt 3: Abrufen des öffentlichen Schlüssels des Amazon-Redshift-Clusters und der IP-Adressen der Cluster-Knoten abgerufen haben. Informationen zum Hinzufügen von Regeln zu einer EC2 Amazon-Sicherheitsgruppe finden Sie unter Autorisieren von eingehendem Datenverkehr für Ihre Instances im EC2 Amazon-Benutzerhandbuch.
Schritt 6: Ausführen des COPY-Befehls, um die Daten zu laden
Führen Sie einen COPY-Befehl aus, um eine Verbindung zum Amazon-EMR-Cluster herzustellen und die Daten in eine Amazon-Redshift-Tabelle zu laden. Der Amazon-EMR-Cluster muss weiter ausgeführt werden, bis der COPY-Befehl abgeschlossen ist. Der Cluster darf beispielsweise nicht für die automatische Beendigung konfiguriert sein.
Wichtig
Wenn eine der Datendateien vor Abschluss von COPY geändert oder gelöscht wird, kann dies zu unerwarteten Ergebnissen führen. Es ist auch möglich, dass die COPY-Operation fehlschlägt.
Geben Sie im COPY-Befehl die ID des Amazon-EMR-Clusters und den Dateipfad und Dateinamen in HDFS an.
COPY sales FROM 'emr://myemrclusterid/myoutput/part*' CREDENTIALS IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
Sie können die Platzhalterzeichen Sternchen (*
) und Fragezeichen (?
) als Teil des Dateinamenarguments verwenden. Beispielsweise lädt part*
die Dateien part-0000
, part-0001
usw. Wenn Sie nur einen Ordnernamen angeben, versucht COPY, alle Dateien im Ordner zu laden.
Wichtig
Wenn Sie Platzhalterzeichen oder nur den Ordnernamen verwenden, müssen Sie überprüfen, ob unerwünschte Dateien geladen werden. Andernfalls schlägt der COPY-Befehl fehl. Einige Prozesse schreiben beispielsweise eine Protokolldatei in den Ausgabeordner.