2016-08-22 3 views
2

Ich habe eine Menge Daten in Dateien, die in Amazon S3 gespeichert sind, und ich plane, sie zu verwenden, um einen Datentresor in Redshift zu erstellen. Meine erste Frage ist, wenn der richtige Ansatz ist, die DV-und Data Marts alle in Redshift zu bauen oder wenn ich die S3 als meine Data Lake betrachten und nur die Data Marts in Redshift haben soll?Datentresor in Redshift und ETL-Strategie

In meiner Architektur betrachte ich derzeit die ehemalige (d. H. S3 Data Lake + Redshift Vault und Marts). Ich weiß jedoch nicht, ob ich ETL-Prozesse direkt in Redshift erstellen kann, um die Marts mit Daten im Vault zu füllen, oder ob ich zum Beispiel Amazon EMR verwenden muss, um die Rohdaten in S3 zu verarbeiten und dort neue Dateien zu generieren Lade sie endlich in die Marts.

Also, meine zweite Frage ist: Was sollte die ETL-Strategie sein? Vielen Dank.

+1

S3 ist nicht relational, es ist im Grunde zum Speichern von Dateien. Data Vault ist in einer relationalen Datenbank implementiert, sodass Sie keinen Datenspeicher in S3 erstellen können. Wie würden Sie Ihre Hubs, Links, Satelliten in S3 bauen? Wenn Sie nach Terminologie suchen, dann könnte S3 Ihren 'Datensee' genannt werden (urgh Ich fühle mich jetzt schmutzig) –

+0

@ Nick.McDermaid, Sie haben Recht. Ich habe S3 eher als Data Lake in meiner Architektur gedacht. Meine Frage ist mehr über DV und Data Marts in Redshift oder nur Data Marts, die aus Daten im See gefüllt werden (ich werde die Frage bearbeiten). Was ich denke ist, den Vault mit Daten in S3 zu laden und dann die Marts mit Daten aus dem Vault zu laden. Ich weiß jedoch nicht, ob ich in der Lage sein werde, ETL-Prozesse direkt in Redshift zu erstellen, oder ich muss es zum Beispiel mit Amazon EMR machen, indem ich die Dateien in S3 verarbeite und neue Dateien mit Daten für die Marts erzeuge und lade es in Redshift? –

+2

Nun, wenn Sie eine Datentresor benötigen, muss es in Rotverschiebung erstellt werden. Sie können Dateien in das DV oder DM laden. Wenn Sie sich für eine DV entscheiden, können Sie DV über Ansichten und Anweisungen zum Löschen/Einfügen/Aktualisieren in DM laden - Sie müssen nicht mehr zum Exportieren und Importieren von Dateien wechseln. Das Laden von Dateien in Redshift würde eine Art von Scheduling-/Job-Running-Tool erfordern, um (bei AWS oder nicht) eine Verbindung zu Rotverschiebung herzustellen und den Befehl "COPY" in Rotverschiebung auszuführen, um die Daten zu laden. Ich habe ein Projekt untersucht, aber ich habe es noch nie angefangen, also ist das alles Theorie für mich. –

Antwort

0

Entschuldigung! Ich habe nicht den Ruf zu kommentieren, deshalb schreibe ich im Antwortbereich.

Ich bin genau im selben Boot wie du bist. Ich versuche, meine ETL-Operation in Rotverschiebung durchzuführen und ab sofort habe ich 3 Milliarden Zeilen und erwarte, dass ich drastisch wachsen werde.
Im Moment laden Sie Daten in Data Marts in Rotverschiebung mit DML, die in regelmäßigen Abständen von AWS Lambda aufgerufen werden. Laut mir ist es sehr schwierig, einen Datentresor in Redshift zu erstellen.

+0

es klingt, als hättest du schon mehr Fortschritte gemacht als ich. Ich forsche gerade und definiere, was ich v0.1 meiner Fluss- und Datenarchitektur nenne. Die Data Vault-Strategie macht für mich sehr viel Sinn. Jetzt versuche ich, die Implikationen der Implementierung von Redshift zu verstehen. Haben Sie die Amazon Data Pipeline für die ETL zwischen Vault und Marts verwendet? Von dem, was ich gelesen habe, sieht es wie ein praktikabler Ansatz mit geringen zusätzlichen Kosten aus. –

+0

Ja, Sie können Datenpipeline verwenden, aber beachten Sie, dass das minimale Planungsintervall für Datenpipeline 15 Minuten beträgt und meine Geschäftsanforderungen häufiger sind. Außerdem konnte ich keine Dokumentation finden, um SQL-Umwandlung auf meinen Staging-Tabellen zwischen Redshift (Source) und Redshift (Destination) durchzuführen. –

0

S3 ist nur ein Schlüsselwertspeicher für Dateien. Sie können dort kein DV oder DW erstellen. So können Sie Redshift oder EMR verwenden, um die Daten in das relationale Format für Ihr DV zu verarbeiten. Es liegt an Ihnen, ob Sie wählen oder nicht; EMR hat spezifische Anwendungsfälle IMO

+0

Ich habe es klar, dass S3 nicht für den DV ist. Frage ist über DV + DMs in Redshift vs nur DMs dort. Ich fragte auch nach ETL-Strategien, um das relationale Modell in Redshift mit Daten aus S3 zu bevölkern. –

+0

Wenn Sie nur Ihre DM in Redshift haben, wo werden Sie Ihre DV speichern? EMR? Das ist eine teure Lösung. Oder es scheint, dass Sie DV komplett vermeiden möchten? Ich verstehe Ihre Vorgehensweise hier wirklich nicht. Warum sollten Sie DV nur darauf verwenden, was Sie in Bezug auf ETL tun können? – simplycoding

+0

Ich hätte mit meiner Frage klarer sein sollen. Ich möchte Eingaben erhalten, um einen DV zu haben, von wo man Daten erhält, um DM zu füllen, gegen DM nur in Redshift, die von den Daten in S3 bevölkert werden, die höchstwahrscheinlich über EMR vorbearbeitet werden müssen. Ich habe über DV gelesen und sehe viele Vorteile, möchte aber immer noch von anderen Erfahrungen hören. Angenommen, die Empfehlung ist DV, würde ich gerne wissen, wie andere die Umwandlung und das Laden von Daten von DV (Redshift) in DM (Redshift) implementieren. Mit Lambda, Datenpipeline, SQL in Redshift, EMR, um Daten von DV zu bekommen und in DM's zu bringen? –

0

Ich bin ein bisschen spät die Party und zweifellos haben Sie dies gelöst, aber es könnte immer noch relevant sein. Ich dachte nur, ich würde meine Meinung dazu sagen. Eine Lösung besteht darin, S3 und Hive als persistenten Staging-Bereich (Data Lake, wenn Sie so wollen) zu verwenden, um die Daten aus Quellen zu landen. Konstruiere dein DV komplett in Redshift. Sie werden immer noch einen Staging-Bereich in Redshift benötigen, um Dateien von S3 zu importieren, um sicherzustellen, dass die Hashes auf dem Weg zu den Redshift-Staging-Tabellen berechnet werden (Hier kommt EMR/Hive ins Spiel). Du könntest die Hashes direkt in Redshift hinzufügen, aber es könnte Redshift abhängig vom Volumen unter Druck setzen. Push-Daten aus dem Staging in die DV über einfache alte Bulk-Insert und Update-Anweisungen und dann virtualisieren Ihre Marts in Redshift mit Ansichten.

Sie können jedes Datenpipeline-Tool verwenden, um dies zu erreichen, und Lambda könnte auch ein Kandidat für Sie oder ein anderes Workflow-/Pipeline-Tool sein.