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.
Daten von Amazon laden EMR
Sie können den COPY Befehl verwenden, um Daten parallel aus einem EMR Amazon-Cluster zu laden, der so konfiguriert ist, dass er Textdateien in das Hadoop Distributed File System (HDFS) des Clusters als Dateien mit fester Breite, durch Zeichen getrennte Dateien, Dateien oder formatierte Dateien schreibt. CSV JSON
Prozess zum Laden von Daten von Amazon EMR
Dieser Abschnitt führt Sie durch den Prozess des Ladens von Daten aus einem EMR Amazon-Cluster. In den folgenden Abschnitten finden Sie detaillierte Anweisungen für die einzelnen Schritte.
-
Schritt 1: Berechtigungen konfigurieren IAM
Die Benutzer, die den EMR Amazon-Cluster erstellen und den Amazon COPY Redshift-Befehl ausführen, müssen über die erforderlichen Berechtigungen verfügen.
-
Schritt 2: Erstellen Sie einen EMR Amazon-Cluster
Konfigurieren Sie den Cluster für die Ausgabe von Textdateien an das Hadoop Distributed File System ()HDFS. Sie benötigen die EMR Amazon-Cluster-ID und die öffentliche Hauptnummer des Clusters DNS (den Endpunkt für die EC2 Amazon-Instance, die den Cluster hostet).
-
Der öffentliche Schlüssel ermöglicht es den Amazon Redshift Redshift-Clusterknoten, SSH Verbindungen zu den Hosts herzustellen. 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 Redshift-Clusters zur Datei mit den autorisierten Schlüsseln des Hosts hinzu, sodass der Host den Amazon Redshift Redshift-Cluster erkennt und die SSH Verbindung akzeptiert.
-
Ändern Sie die Sicherheitsgruppen der EMR Amazon-Instance, um Eingaberegeln hinzuzufügen, um die Amazon Redshift-IP-Adressen zu akzeptieren.
-
Schritt 6: Führen Sie den COPY Befehl aus, um die Daten zu laden
Führen Sie in einer Amazon Redshift Redshift-Datenbank den COPY Befehl aus, um die Daten in eine Amazon Redshift Redshift-Tabelle zu laden.
Schritt 1: Berechtigungen konfigurieren IAM
Die Benutzer, die den EMR Amazon-Cluster erstellen und den Amazon COPY Redshift-Befehl ausführen, müssen über die erforderlichen Berechtigungen verfügen.
Um Berechtigungen zu konfigurieren IAM
-
Fügen Sie die folgenden Berechtigungen für den Benutzer hinzu, der den EMR Amazon-Cluster erstellen wird.
ec2:DescribeSecurityGroups ec2:RevokeSecurityGroupIngress ec2:AuthorizeSecurityGroupIngress redshift:DescribeClusters
-
Fügen Sie die folgende Berechtigung für die IAM Rolle oder den Benutzer hinzu, die den COPY Befehl ausführen wird.
elasticmapreduce:ListInstances
-
Fügen Sie der IAM Rolle des EMR Amazon-Clusters die folgende Berechtigung hinzu.
redshift:DescribeClusters
Schritt 2: Erstellen Sie einen EMR Amazon-Cluster
Der COPY Befehl lädt Daten aus Dateien auf dem Amazon EMR Hadoop Distributed File System (HDFS). Wenn Sie den EMR Amazon-Cluster erstellen, konfigurieren Sie den Cluster so, dass er Datendateien in den Clustern ausgibtHDFS.
Um einen EMR Amazon-Cluster zu erstellen
-
Erstellen Sie einen EMR Amazon-Cluster in derselben AWS Region wie der Amazon Redshift-Cluster.
Wenn sich der Amazon Redshift Redshift-Cluster in einem befindetVPC, muss sich der EMR Amazon-Cluster in derselben VPC Gruppe befinden. Wenn der Amazon Redshift Redshift-Cluster den EC2 -Classic-Modus verwendet (d. h., er befindet sich nicht in einemVPC), muss der EMR Amazon-Cluster auch den EC2 -Classic-Modus verwenden. Weitere Informationen finden Sie unter Verwaltung von Clustern in Virtual Private Cloud (VPC) im Amazon Redshift Management Guide.
-
Konfigurieren Sie den Cluster so, dass er Datendateien in die des Clusters HDFS ausgibt. Die HDFS Dateinamen dürfen keine Sternchen (*) oder Fragezeichen (?) enthalten.
Wichtig
Die Dateinamen dürfen keine Sternchen (*) oder Fragezeichen (?) enthalten.
-
Geben Sie Nein für die Option Automatisch beenden in der EMR Amazon-Cluster-Konfiguration an, damit der Cluster verfügbar bleibt, während der COPY Befehl ausgeführt wird.
Wichtig
Wenn eine der Datendateien geändert oder gelöscht wird, bevor der Vorgang COPY abgeschlossen ist, kann dies zu unerwarteten Ergebnissen führen, oder der COPY Vorgang schlägt fehl.
-
Notieren Sie sich die Cluster-ID und den Main Public 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 SSHGruppe „Aufnahmeeinstellungen“.
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 Clusterschlüssel und die Clusterknoten-IP-Adressen für Ihren Cluster mithilfe von Amazon Redshift abzurufenCLI, führen Sie den Befehl describe-clusters aus. Beispielsweise:
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", ... ... }
Verwenden Sie die DescribeClusters
Aktion, um den öffentlichen Clusterschlüssel und die Clusterknoten-IP-Adressen für Ihren Cluster mithilfe von Amazon Redshift API abzurufen. Weitere Informationen finden Sie unter describe-clusters im Amazon Redshift CLI Guide oder DescribeClustersim Amazon Redshift Guide. API
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 Clusterschlüssel zur Datei mit den autorisierten Schlüsseln jedes Hosts für alle EMR Amazon-Cluster-Knoten hinzu, sodass 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 zu einer Instance mithilfe SSH finden Sie unter Connect to Your Instance im EC2Amazon-Benutzerhandbuch.
-
Kopieren Sie den öffentlichen Schlüssel von Amazon Redshift von 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 als Typ die Option 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 EC2Amazon-Benutzerhandbuch.
Schritt 6: Führen Sie den COPY Befehl aus, um die Daten zu laden
Führen Sie einen COPY Befehl aus, um eine Verbindung zum EMR Amazon-Cluster herzustellen und die Daten in eine Amazon Redshift-Tabelle zu laden. Der EMR Amazon-Cluster muss weiterlaufen, bis der COPY Befehl abgeschlossen ist. Der Cluster darf beispielsweise nicht für die automatische Beendigung konfiguriert sein.
Wichtig
Wenn eine der Datendateien geändert oder gelöscht wird, bevor der Vorgang COPY abgeschlossen ist, kann dies zu unerwarteten Ergebnissen führen, oder der COPY Vorgang schlägt fehl.
Geben Sie im COPY Befehl die EMR Amazon-Cluster-ID sowie den HDFS Dateipfad und den Dateinamen 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, wird COPY versucht, alle Dateien im Ordner zu laden.
Wichtig
Wenn Sie Platzhalterzeichen oder nur den Ordnernamen verwenden, stellen Sie sicher, dass keine unerwünschten Dateien geladen werden, da sonst der COPY Befehl fehlschlägt. Einige Prozesse schreiben beispielsweise eine Protokolldatei in den Ausgabeordner.