AWS Data Pipeline ist für Neukunden nicht mehr verfügbar. Bestehende Kunden von AWS Data Pipeline können den Service weiterhin wie gewohnt nutzen. Weitere Informationen
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.
Staging von Daten und Tabellen mit Pipeline-Aktivitäten
AWS Data Pipeline kann Eingabe- und Ausgabedaten in Ihren Pipelines bereitstellen, so dass bestimmte Aktivitäten, wie z. B ShellCommandActivity
und HiveActivity
, leichter zu verwenden sind.
Daten-Staging gibt Ihnen die Möglichkeit, Daten von einem Eingabedatenknoten in die Ressource zu kopieren, die die Aktivität ausführt, und anschließend genauso von der Resource in den Ausgabedatenknoten.
Die bereitgestellten Daten auf der Amazon EMR- oder Amazon EC2-Ressource sind verfügbar, indem spezielle Variablen in den Shell-Befehlen oder Hive-Skripten der Aktivität verwendet werden.
Tabellen-Staging ist mit Daten-Staging vergleichbar, außer dass die Daten speziell in Form von Datenbanktabellen bereitgestellt werden.
AWS Data Pipeline unterstützt die folgenden Staging-Szenarien:
-
Daten-Staging mit
ShellCommandActivity
-
Tabellen-Staging mit Hive und zum Staging fähigen Datenknoten
-
Tabellen-Staging mit Hive und nicht zum Staging fähigen Datenknoten
Anmerkung
Staging funktioniert nur, wenn das Feld stage
für eine Aktivität wie etwa ShellCommandActivity
auf true
festgelegt ist. Weitere Informationen finden Sie unter ShellCommandActivity.
Darüber hinaus sind zwischen Datenknoten und Aktivitäten vier verschiedene Beziehungen möglich:
- Staging von Daten lokal auf einer Ressource
-
Die Eingabedaten werden automatisch in das lokale Dateisystem der Ressource kopiert. Die Ausgabedaten werden automatisch aus dem lokalen Dateisystem auf den Ausgabedatenknoten kopiert. Wenn Sie z. B.
ShellCommandActivity
-Eingaben und -Ausgaben mit Staging = true konfigurieren, sind die Eingabedaten als INPUTx_STAGING_DIR und die Ausgabedaten als OUTPUTx_STAGING_DIR verfügbar, wobei x die Anzahl der Ein- oder Ausgaben ist. - Staging von Eingabe- und -Ausgabedefinitionen für eine Aktivität
-
Das Format der Eingabedaten (Spaltennamen und Tabellennamen) wird automatisch auf die Ressource der Aktivität kopiert. Beispielsweise, wenn Sie
HiveActivity
mit Staging = true konfigurieren. Das auf dem EingabedatenknotenS3DataNode
angegebene Datenformat wird zum Bereitstellen der Tabellendefinition aus der Hive-Tabelle verwendet. - Staging nicht aktiviert
-
Die Eingabe- und Ausgabe-Objekte und ihre Felder sind für die Aktivität zwar verfügbar, die Daten selbst jedoch nicht. Dies trifft z. B. bei
EmrActivity
standardmäßig zu. Andere Aktivitäten müssen Sie dazu mit Staging = false konfigurieren. In einer solchen Konfiguration sind die Datenfelder verfügbar und die Aktivität kann mit der AWS Data Pipeline-Ausdruckssyntax auf sie verweisen, sofern die Abhängigkeit erfüllt ist. Dies dient alleinig der Abhängigkeitsprüfung. Der Code in der Aktivität veranlasst das Kopieren der Daten von der Eingabe auf die Ressource, auf der die Aktivität ausgeführt wird. - Abhängigkeitsbeziehung zwischen Objekten
-
Zwischen zwei Objekten besteht eine Abhängigkeitsbeziehung, die zu einer ähnlichen Situation führt, wie wenn Staging nicht aktiviert ist. In diesem Fall fungiert ein Datenknoten oder eine Aktivität als Vorbedingung für die Ausführung einer anderen Aktivität.
Data Staging mit ShellCommandActivity
Stellen Sie sich ein Szenario mit einer ShellCommandActivity
mit S3DataNode
-Objekten als Dateneingabe und -ausgabe vor. AWS Data Pipeline stellt die Datenknoten mit den Umgebungsvariablen ${INPUT1_STAGING_DIR}
und ${OUTPUT1_STAGING_DIR}
automatisch bereit, um sie für den Shell-Befehl zugänglich zu machen, als ob sie lokale Dateiordner wären. Dies wird im folgenden Beispiel veranschaulicht. Der numerische Teil der Variablen namens INPUT1_STAGING_DIR
und OUTPUT1_STAGING_DIR
wird abhängig von der Anzahl der Datenknoten erhöht, auf die Ihre Aktivität verweist.
Anmerkung
Dieses Szenario funktioniert nur wie beschrieben, wenn Ihre Dateneingabe- und -ausgaben S3DataNode
-Objekte sind. Außerdem ist das Staging von Ausgabedaten nur zulässig, wenn für das S3DataNode
-Ausgabeobjekt directoryPath
festgelegt ist.
{ "id": "AggregateFiles", "type": "ShellCommandActivity", "stage": "true", "command": "cat ${INPUT1_STAGING_DIR}/part* > ${OUTPUT1_STAGING_DIR}/aggregated.csv", "input": { "ref": "MyInputData" }, "output": { "ref": "MyOutputData" } }, { "id": "MyInputData", "type": "S3DataNode", "schedule": { "ref": "MySchedule" }, "filePath": "s3://my_bucket/source/#{format(@scheduledStartTime,'YYYY-MM-dd_HHmmss')}/items" } }, { "id": "MyOutputData", "type": "S3DataNode", "schedule": { "ref": "MySchedule" }, "directoryPath": "s3://my_bucket/destination/#{format(@scheduledStartTime,'YYYY-MM-dd_HHmmss')}" } }, ...
Tabellen-Staging mit Hive und zum Staging fähigen Datenknoten
Stellen Sie sich ein Szenario mit einer HiveActivity
mit S3DataNode
-Objekten als Dateneingabe und -ausgabe vor. AWS Data Pipeline stellt die Datenknoten mit den Variablen ${input1}
und ${output1}
automatisch bereit, um sie für das Hive-Skript zugänglich zu machen, als ob sie Hive-Tabellen wären. Dies wird im folgenden Beispiel für HiveActivity
veranschaulicht. Der numerische Teil der Variablen namens input
und output
wird abhängig von der Anzahl der Datenknoten erhöht, auf die Ihre Aktivität verweist.
Anmerkung
Dieses Szenario funktioniert nur wie beschrieben, wenn die Dateneingaben und -ausgaben S3DataNode
- oder MySqlDataNode
-Objekte sind. Tabelle-Staging wird für DynamoDBDataNode
nicht unterstützt.
{ "id": "MyHiveActivity", "type": "HiveActivity", "schedule": { "ref": "MySchedule" }, "runsOn": { "ref": "MyEmrResource" }, "input": { "ref": "MyInputData" }, "output": { "ref": "MyOutputData" }, "hiveScript": "INSERT OVERWRITE TABLE ${output1} select * from ${input1};" }, { "id": "MyInputData", "type": "S3DataNode", "schedule": { "ref": "MySchedule" }, "directoryPath": "s3://test-hive/input" } }, { "id": "MyOutputData", "type": "S3DataNode", "schedule": { "ref": "MySchedule" }, "directoryPath": "s3://test-hive/output" } }, ...
Tabellen-Staging mit Hive und nicht zum Staging fähigen Datenknoten
Angenommen, eine HiveActivity
wird für die Dateneingabe mit DynamoDBDataNode
und für die Datenausgabe mit einem S3DataNode
-Objekt verwendet. Da kein Data Staging verfügbar istDynamoDBDataNode
, müssen Sie die Tabelle zunächst manuell in Ihrem Hive-Skript erstellen und dabei den Variablennamen verwenden, um auf die DynamoDB-Tabelle #{input.tableName}
zu verweisen. Eine ähnliche Nomenklatur gilt, wenn die DynamoDB-Tabelle die Ausgabe ist, außer Sie verwenden eine Variable. #{output.tableName}
Da in diesem Beispiel für das Ausgabeobjekt S3DataNode
Staging verfügbar ist, können Sie unter ${output1}
auf den Ausgabedatenknoten verweisen.
Anmerkung
In diesem Beispiel verfügt die Variable für den Tabellennamen über das #-(Hash-)Zeichen als Präfix, da AWS Data Pipeline zum Zugriff auf tableName
oder directoryPath
Ausdrücke verwendet. Weitere Informationen darüber, wie die Ausdrucksauswertung in AWS Data Pipeline funktioniert, finden Sie unter Ausdrucksauswertung.
{ "id": "MyHiveActivity", "type": "HiveActivity", "schedule": { "ref": "MySchedule" }, "runsOn": { "ref": "MyEmrResource" }, "input": { "ref": "MyDynamoData" }, "output": { "ref": "MyS3Data" }, "hiveScript": "-- Map DynamoDB Table SET dynamodb.endpoint=dynamodb.us-east-1.amazonaws.com; SET dynamodb.throughput.read.percent = 0.5; CREATE EXTERNAL TABLE dynamodb_table (item map<string,string>) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES ("dynamodb.table.name" = "#{input.tableName}"); INSERT OVERWRITE TABLE ${output1} SELECT * FROM dynamodb_table;" }, { "id": "MyDynamoData", "type": "DynamoDBDataNode", "schedule": { "ref": "MySchedule" }, "tableName": "MyDDBTable" }, { "id": "MyS3Data", "type": "S3DataNode", "schedule": { "ref": "MySchedule" }, "directoryPath": "s3://test-hive/output" } }, ...