-1

Ich habe eine tägliche Tabelle von Protokollen (ca. 10m Eingänge jeden Tag) in DynamoDB gespeichert.AWS: Datentransformation von dynamodb zu redshift

Um die Analyse zu machen, muss ich sie in Redshift übertragen. Außerdem muss ich neue Spalten erstellen, indem ich einen String analysiere (nvarchar (250)). Meine Idee war, den COPY-Befehl zu verwenden und Daten von DynamoDB zu Redshift zu übertragen und dann UDFs zu verwenden, um neue Spalten zu erstellen.

Das Problem mit diesem Ansatz ist, dass es viel Zeit in Anspruch nimmt (beide Teile) und es weiterhin fehlschlägt (Status der Abfrage ABORTED): Ich übertrage etwa 10 Tage Daten in einem Kopierbefehl.

Was sollte Ihrer Meinung nach ein besserer Ansatz sein: Verwendung einiger Amazon-Dienste wie Datenpipeline oder EMR? oder das Gleiche tun, aber anders organisiert?

Antwort

1

Mein Designvorschlag speichert Ihre Daten nicht in dynamodb. In der Kostenperspektive verbrauchen Sie beim Kopieren den höchsten Durchsatzwert, den Sie für dynamo db festgelegt haben.

Nicht sicher, wie Sie Primärschlüsselwerte festlegen und was der aktuelle Durchsatzwert ist, den Sie für dynamodb festlegen.

Dafür ist meine Lösung schreiben Daten in s3 im erforderlichen Format der Rotverschiebung Speicher. Von s3 verarbeiten Sie Ihre Daten in Rotverschiebung Cluster mit Datenpipeline in periodischen/einmalige Aktivität.

Aws Datenpipeline verwenden standardmäßig EMR, um Ihre Daten zu verarbeiten.

Wenn Sie mehr Reinigung benötigen, bevor Sie Daten speichern, sollten Sie Spark in EMR verwenden.

Aber vorher müssen Sie sagen. Was ist die Größe von 10m Datensätze Größe und Sie haben die Option, meinen Vorschlag wie Schreiben in s3 zu übernehmen. Wenn ja, müssen Sie unter Berücksichtigung von Leistung/Kosten optimierten Prozess entwerfen.

Wenn Sie mehr Hilfe benötigen, werden Kommentare meinen besten Vorschlag beitragen.

+0

Vielen Dank für die Antwort! Eine Frage: Glauben Sie, dass die Datenpipeline zur Erstellung neuer Spalten verwendet werden kann, während Daten von dynamodb nach s3 übertragen werden, oder sollten die Daten zuerst übertragen und dann transformiert werden (in Rotverschiebung)? –

+0

Keine Datenpipeline unterstützt diese Funktion nicht. Warum können Sie keine s3-Datei mit Daten schreiben, die Sie brauchen? Wenn Sie es von dynamo db tun möchten. Gehen Sie für aws kleben oder verwenden Sie Dynamo db Streams Wrapper und Datensätze in Lambda verarbeiten und schreiben Sie auf s3 (aber ich stimme dieser Lösung langfristig nicht/Kosten/Leistungsfaktoren) –

+0

soweit ich gesehen habe, aws Kleber (ich dachte darüber nach es auch) ist nur in einer Region verfügbar: uns Osten (n. Virginia) und meine Daten sind in der anderen Region ... –

0

Sie können AWS Glue verwenden, um einen ETL-Job (Extract Transform Load) einzurichten, um Ihre Daten von DynamoDB nach Redshift zu verschieben.