RedshiftCopyActivity - AWS Data Pipeline

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.

RedshiftCopyActivity

Kopiert Daten von DynamoDB oder Amazon S3 nach Amazon Redshift. Sie können Daten in eine neue Tabelle laden oder Daten in einer vorhandenen Tabelle einfach zusammenführen.

Hier finden Sie eine Übersicht über einen Anwendungsfall, in dem RedshiftCopyActivity verwendet wird:

  1. Verwenden Sie zunächst AWS Data Pipeline , um Ihre Daten in Amazon S3 bereitzustellen.

  2. Wird verwendetRedshiftCopyActivity, um die Daten von Amazon RDS und Amazon EMR nach Amazon Redshift zu verschieben.

    Auf diese Weise können Sie Ihre Daten in Amazon Redshift laden, wo Sie sie analysieren können.

  3. Wird verwendetSqlActivity, um SQL-Abfragen für die Daten durchzuführen, die Sie in Amazon Redshift geladen haben.

Darüber hinaus unterstützt RedshiftCopyActivity Ihre Arbeit mit einem S3DataNode, weil es eine Manifestdatei unterstützt. Weitere Informationen finden Sie unter S3 DataNode.

Beispiel

Es folgt ein Beispiel für diesen Objekttyp.

Um die Formatkonvertierung sicherzustellen, verwendet dieses Beispiel EMPTYASNULL und IGNOREBLANKLINES, spezielle Konvertierungsparameter in commandOptions. Weitere Informationen finden Sie unter Datenkonvertierungsparameter im Amazon Redshift Database Developer Guide.

{ "id" : "S3ToRedshiftCopyActivity", "type" : "RedshiftCopyActivity", "input" : { "ref": "MyS3DataNode" }, "output" : { "ref": "MyRedshiftDataNode" }, "insertMode" : "KEEP_EXISTING", "schedule" : { "ref": "Hour" }, "runsOn" : { "ref": "MyEc2Resource" }, "commandOptions": ["EMPTYASNULL", "IGNOREBLANKLINES"] }

Die folgende Pipeline-Beispieldefinition zeigt eine Aktivität, die den Einfügemodus APPEND nutzt:

{ "objects": [ { "id": "CSVId1", "name": "DefaultCSV1", "type": "CSV" }, { "id": "RedshiftDatabaseId1", "databaseName": "dbname", "username": "user", "name": "DefaultRedshiftDatabase1", "*password": "password", "type": "RedshiftDatabase", "clusterId": "redshiftclusterId" }, { "id": "Default", "scheduleType": "timeseries", "failureAndRerunMode": "CASCADE", "name": "Default", "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" }, { "id": "RedshiftDataNodeId1", "schedule": { "ref": "ScheduleId1" }, "tableName": "orders", "name": "DefaultRedshiftDataNode1", "createTableSql": "create table StructuredLogs (requestBeginTime CHAR(30) PRIMARY KEY DISTKEY SORTKEY, requestEndTime CHAR(30), hostname CHAR(100), requestDate varchar(20));", "type": "RedshiftDataNode", "database": { "ref": "RedshiftDatabaseId1" } }, { "id": "Ec2ResourceId1", "schedule": { "ref": "ScheduleId1" }, "securityGroups": "MySecurityGroup", "name": "DefaultEc2Resource1", "role": "DataPipelineDefaultRole", "logUri": "s3://myLogs", "resourceRole": "DataPipelineDefaultResourceRole", "type": "Ec2Resource" }, { "id": "ScheduleId1", "startDateTime": "yyyy-mm-ddT00:00:00", "name": "DefaultSchedule1", "type": "Schedule", "period": "period", "endDateTime": "yyyy-mm-ddT00:00:00" }, { "id": "S3DataNodeId1", "schedule": { "ref": "ScheduleId1" }, "filePath": "s3://datapipeline-us-east-1/samples/hive-ads-samples.csv", "name": "DefaultS3DataNode1", "dataFormat": { "ref": "CSVId1" }, "type": "S3DataNode" }, { "id": "RedshiftCopyActivityId1", "input": { "ref": "S3DataNodeId1" }, "schedule": { "ref": "ScheduleId1" }, "insertMode": "APPEND", "name": "DefaultRedshiftCopyActivity1", "runsOn": { "ref": "Ec2ResourceId1" }, "type": "RedshiftCopyActivity", "output": { "ref": "RedshiftDataNodeId1" } } ] }

Der APPEND-Vorgang fügt Elemente zu einer Tabelle hinzu, unabhängig von Primär- oder Sortierschlüsseln. Bei der folgenden Tabelle können Sie beispielsweise einen Datensatz mit demselben ID- und Benutzer-Wert anfügen.

ID(PK) USER 1 aaa 2 bbb

Sie können einen Datensatz mit demselben ID- und Benutzer-Wert anfügen:

ID(PK) USER 1 aaa 2 bbb 1 aaa
Anmerkung

Wenn ein APPEND-Vorgang unterbrochen und wieder aufgenommen wird, ist es möglich, dass die entstandene Wiederausführungs-Pipeline von Anfang an Anfügungen vornimmt. Dies kann zu weiteren Duplizierungen führen. Sie sollten dieses Verhalten kennen, besonders, wenn Sie Logik verwenden, die die Anzahl an Zeilen zählt.

Ein Tutorial finden Sie unter Kopieren Sie Daten nach Amazon Redshift mit AWS Data Pipeline.

Syntax

Pflichtfelder Beschreibung Slot-Typ
insertMode

Legt fest, AWS Data Pipeline was mit bereits vorhandenen Daten in der Zieltabelle geschehen soll, die sich mit Zeilen in den zu ladenden Daten überschneiden.

Gültige Werte sind: KEEP_EXISTING, OVERWRITE_EXISTING, TRUNCATE und APPEND.

KEEP_EXISTING fügt der Tabelle neue Zeilen hinzu und lässt die vorhandenen Zeilen unverändert.

KEEP_EXISTING und OVERWRITE_EXISTING verwenden den Primärschlüssel, Sortier- und Verteilschlüssel, um zu identifizieren, welche eingehende Zeilen mit vorhandenen Zeilen übereinstimmen. Weitere Informationen finden Sie unter Aktualisieren und Einfügen neuer Daten im Amazon Redshift Database Developer Guide.

TRUNCATE löscht alle Daten in der Zieltabelle, bevor die neuen Daten hinzugefügt werden.

APPEND fügt alle Datensätze am Ende der Redshift-Tabelle an. APPEND setzt keinen Primär-, Verteilungs- oder Sortierschlüssel voraus. Es können also Zeilen hinzugefügt werden, bei denen es sich um potenzielle Duplikate handelt.

Aufzählung

Objektaufruf-Felder Beschreibung Slot-Typ
schedule

Dieses Objekt wird innerhalb der Ausführung eines Zeitplanintervalls aufgerufen.

Sie müssen einen Zeitplanverweis auf ein anderes Objekt angeben, um die Abhängigkeitsausführungsreihenfolge für dieses Objekt festzulegen.

In den meisten Fällen empfehlen wir, den Zeitplanverweis auf das Standard-Pipeline-Objekt zu setzen, damit alle Objekte diesen Zeitplan erben. Sie können beispielsweise einen Zeitplan explizit für das Objekt festlegen, indem Sie "schedule": {"ref": "DefaultSchedule"} angeben.

Wenn der Hauptplan in Ihrer Pipeline verschachtelte Zeitpläne enthält, erstellen Sie ein übergeordnetes Objekt mit Zeitplanreferenz.

Weitere Informationen zu optionalen Zeitplankonfigurationen finden Sie unter Zeitplan.

Referenzobjekt, wie z. B.: "schedule":{"ref":"myScheduleId"}

Erforderliche Gruppe (mindestens eine der folgenden ist erforderlich) Beschreibung Slot-Typ
runsOn Die Rechenressource zum Ausführen der Aktivität oder des Befehls. Beispiel: Amazon EC2 Instance oder Amazon EMR-Cluster. Referenzobjekt, z. B. „runsOn“: {"ref“:“ myResourceId „}
workerGroup Die Auftragnehmergruppe. Dies wird für Routing-Aufgaben verwendet. Wenn Sie einen runsOn-Wert angeben und workerGroup vorhanden ist, wird workerGroup ignoriert. String

Optionale Felder Beschreibung Slot-Typ
attemptStatus Zuletzt gemeldeter Status von der Remote-Aktivität. String
attemptTimeout Timeout für die Remote-Arbeit abgeschlossen. Wenn diese Option aktiviert ist, kann eine Remote-Aktivität, die nicht innerhalb der festgelegten Startzeit abgeschlossen wird, wiederholt werden. Intervall
commandOptions

Verwendet Parameter, die während des COPY Vorgangs an den Amazon Redshift Redshift-Datenknoten übergeben werden. Informationen zu Parametern finden Sie unter COPY im Amazon Redshift Database Developer Guide.

Wenn COPY die Tabelle lädt, versucht der Befehl implizit, die Zeichenfolgen in den Quelldaten in den Datentyp der Zielspalte zu konvertieren. Zusätzlich zu den Standard-Datenkonvertierungen, die automatisch stattfinden, wenn Fehler erhalten oder andere Konvertierungen benötigen, können Sie zusätzliche Umrechnungsparameter angeben. Weitere Informationen finden Sie unter Datenkonvertierungsparameter im Amazon Redshift Database Developer Guide.

Wenn dem Eingabe- oder Ausgabedatenknoten ein Datenformat zugeordnet ist, werden die angegebenen Parameter ignoriert.

Da beim Kopieren die Daten zunächst mit dem Befehl COPY in eine Staging-Tabelle eingefügt und danach mit dem Befehl INSERT von der Staging- in die Zieltabelle kopiert werden, können einige COPY-Parameter nicht verwendet werden (z. B. die Fähigkeit des COPY-Befehls, der das automatische Komprimieren der Tabelle aktiviert). Wenn die Tabelle komprimiert werden soll, fügen Sie der Anweisung CREATE TABLE Angaben zur Spaltencodierung hinzu.

In einigen Fällen, in denen Daten aus dem Amazon Redshift-Cluster entladen und Dateien in Amazon S3 erstellt werden müssen, ist das außerdem auf den UNLOAD Betrieb von Amazon Redshift RedshiftCopyActivity angewiesen.

Zur Verbesserung der Leistung beim Kopieren und Entladen geben Sie den PARALLEL OFF-Parameter aus dem UNLOAD Befehl an. Informationen zu Parametern finden Sie unter UNLOAD im Amazon Redshift Database Developer Guide.

String
dependsOn Angeben der Abhängigkeit von einem anderen ausführbaren Objekt. Referenzobjekt: "dependsOn":{"ref":"myActivityId"}
failureAndRerunModus Beschreibt das Verhalten des Konsumentenknotens, wenn Abhängigkeiten fehlschlagen oder erneut ausgeführt werden Aufzählung
input Der Eingabedatenknoten. Die Datenquelle kann Amazon S3, DynamoDB oder Amazon Redshift sein. Referenzobjekt: "input":{"ref":"myDataNodeId"}
lateAfterTimeout Die nach dem Start der Pipeline verstrichene Zeit, innerhalb der das Objekt abgeschlossen werden muss. Sie wird nur ausgelöst, wenn der Zeitplantyp nicht auf eingestellt ist. ondemand Intervall
maxActiveInstances Die maximale Anzahl gleichzeitiger aktiver Instances einer Komponente. Wiederholungen zählen nicht zur Anzahl der aktiven Instances. Ganzzahl
maximumRetries Maximale Anzahl von Versuchen bei Ausfällen Ganzzahl
onFail Eine Aktion, die ausgeführt werden soll, wenn das aktuelle Objekt fehlschlägt. Referenzobjekt: "onFail":{"ref":"myActionId"}
onLateAction Aktionen, die ausgelöst werden sollen, wenn ein Objekt noch nicht geplant oder noch nicht abgeschlossen wurde. Referenzobjekt: "onLateAction":{"ref":"myActionId"}
onSuccess Eine Aktion, die ausgeführt wird, wenn das aktuelle Objekt erfolgreich ist. Referenzobjekt: "onSuccess":{"ref":"myActionId"}
output Der Ausgabedatenknoten. Der Ausgabespeicherort kann Amazon S3 oder Amazon Redshift sein. Referenzobjekt: "output":{"ref":"myDataNodeId"}
übergeordneter Übergeordnetes Objekt des aktuellen Objekts, aus dem Slots übernommen werden. Referenzobjekt: "parent":{"ref":"myBaseObjectId"}
pipelineLogUri Die S3-URI (z. B. 's3://BucketName/Key/ ') zum Hochladen von Protokollen für die Pipeline. String
precondition Legen Sie optional eine Vorbedingung fest. Ein Datenknoten ist solange nicht als "BEREIT" markiert, bis alle Vorbedingungen erfüllt sind. Referenzobjekt: "precondition":{"ref":"myPreconditionId"}
Warteschlange

Entspricht der query_group Einstellung in Amazon Redshift, die es Ihnen ermöglicht, gleichzeitige Aktivitäten anhand ihrer Platzierung in Warteschlangen zuzuweisen und zu priorisieren.

In Amazon Redshift sind bis zu 15 gleichzeitige Verbindungen möglich. Weitere Informationen finden Sie unter Zuweisen von Abfragen zu Warteschlangen im Amazon RDS Database Developer Guide.

String
reportProgressTimeout

Timeout für aufeinanderfolgende Aufrufe von Remote-Arbeit in reportProgress.

Wenn diese Option aktiviert ist, werden Remote-Aktivitäten, die den Fortschritt für den angegebenen Zeitraum nicht melden, als fehlgeschlagen angesehen und es wird erneut versucht.

Intervall
retryDelay Die Zeitüberschreitungsdauer zwischen zwei Wiederholungsversuchen. Intervall
scheduleType

Mit dieser Option können Sie angeben, ob der Plan für die Objekte in Ihrer Pipeline vorgesehen ist. Werte sind cron, ondemand und timeseries.

Die timeseries Planung bedeutet, dass Instances am Ende jedes Intervalls geplant sind.

Die Cron Planung bedeutet, dass Instances am Anfang jedes Intervalls geplant sind.

Ein ondemand-Zeitplan ermöglicht es Ihnen, eine Pipeline einmal pro Aktivierung auszuführen. Dies bedeutet, dass Sie die Pipeline nicht klonen oder neu erstellen müssen, um sie erneut auszuführen.

Um ondemand-Pipelines zu verwenden, rufen Sie einfach den ActivatePipeline-Vorgang für jeden nachfolgenden Lauf auf.

Wenn Sie einen ondemand-Zeitplan verwenden, müssen Sie ihn im Standardobjekt angeben, und er muss der einzige für die Objekte in der Pipeline angegebene scheduleType sein.

Aufzählung
transformSql

Der zum Transformieren der Eingabedaten verwendete SQL SELECT-Ausdruck.

Führen Sie den Ausdruck transformSql in der Tabelle mit dem Namen staging aus.

Wenn Sie Daten aus DynamoDB oder Amazon S3 kopieren, AWS Data Pipeline erstellt eine Tabelle namens „Staging“ und lädt zunächst Daten hinein. Die Daten dieser Tabelle werden zum Aktualisieren der Zieltabelle verwendet.

Das Ausgabe-Schema von transformSql muss mit dem Schema der endgültigen Zieltabelle übereinstimmen.

Wenn Sie die Option transformSql angeben, wird von der angegebenen SQL-Anweisung eine zweite Staging-Tabelle erstellt. Die Daten dieser zweiten Staging-Tabelle werden anschließend in die endgültige Zieltabelle übernommen.

String

Laufzeitfelder Beschreibung Slot-Typ
@activeInstances Liste der aktuell geplanten aktiven Instance-Objekte. Referenzobjekt: "activeInstances":{"ref":"myRunnableObjectId"}
@actualEndTime Zeitpunkt, zu dem die Ausführung dieses Objekts abgeschlossen wurde. DateTime
@actualStartTime Zeitpunkt, zu dem die Ausführung dieses Objekts gestartet wurde. DateTime
cancellationReason Die cancellationReason, wenn dieses Objekt storniert wurde. String
@cascadeFailedOn Beschreibung der Abhängigkeitskette, bei der das Objekt fehlgeschlagen ist. Referenzobjekt: "cascadeFailedOn":{"ref":"myRunnableObjectId"}
emrStepLog EMR-Schrittprotokolle nur bei EMR-Aktivitätsversuchen verfügbar String
errorId Die errorId, wenn dieses Objekt fehlgeschlagen ist. String
errorMessage Die errorMessage, wenn dieses Objekt fehlgeschlagen ist. String
errorStackTrace Die Fehler-Stack-Ablaufverfolgung., wenn dieses Objekt fehlgeschlagen ist. String
@finishedTime Der Zeitpunkt, zu der dieses Objekt seine Ausführung beendet hat. DateTime
hadoopJobLog Hadoop-Jobprotokolle für Versuche für EMR-basierte Aktivitäten verfügbar. String
@healthStatus Der Integritätsstatus des Objekts, der Erfolg oder Misserfolg der letzten Objekt-Instance widerspiegelt, die einen beendeten Zustand erreicht hat. String
@healthStatusFromInstanceId Id des Objekts der letzten Instance, das einen beendeten Zustand erreicht hat. String
@ Zeit healthStatusUpdated Zeitpunkt, zu dem der Servicestatus beim letzten Mal aktualisiert wurde. DateTime
hostname Der Hostname des Clients, der den Aufgabenversuch aufnimmt. String
@lastDeactivatedTime Zeitpunkt, zu dem dieses Objekt zuletzt deaktiviert wurde. DateTime
@ latestCompletedRun Zeit Zeitpunkt des letzten Laufs, für den die Ausführung abgeschlossen wurde. DateTime
@latestRunTime Zeitpunkt des letzten Laufs, für den die Ausführung geplant war. DateTime
@nextRunTime Zeitpunkt des Laufs, der als nächstes geplant werden soll DateTime
reportProgressTime Der letzte Zeitpunkt, an dem die Remote-Aktivität einen Fortschritt gemeldet hat. DateTime
@scheduledEndTime Endzeit für Objekt einplanen. DateTime
@scheduledStartTime Startzeit für Objekt einplanen. DateTime
@Status Der Status des Objekts. String
@Version Pipeline-Version, mit der das Objekt erstellt wurde. String
@waitingOn Beschreibung der Liste der Abhängigkeiten, auf die dieses Objekt wartet. Referenzobjekt: "waitingOn":{"ref":"myRunnableObjectId"}

Systemfelder Beschreibung Slot-Typ
@error Fehler mit einer Beschreibung des falsch formatierten Objekts. String
@pipelineId Id der Pipeline, zu der dieses Objekt gehört. String
@sphere Die Sphäre eines Objekts. Gibt seine Position im Lebenszyklus an. Beispielsweise ergeben Komponentenobjekte Instance-Objekte, die Versuchsobjekte ausführen. String