2017-08-16 1 views
2

Ich muss einen ETL-Prozess erstellen, die extrahieren, transformieren & dann 100+ Tabellen aus mehreren Instanzen von SQLServer auf so viele Instanzen von Oracle parallel täglich laden Basis. Ich verstehe, dass ich mehrere Threads in Java erstellen kann, um dies zu erreichen, aber wenn alle auf demselben Rechner laufen, wird dieser Ansatz nicht skaliert. Ein anderer Ansatz könnte darin bestehen, dass eine Reihe von ec2-Instanzen & beginnt, Tabellen für jede Instanz auf einer anderen ec2-Instanz zu übertragen. Bei diesem Ansatz müsste ich jedoch auf "Elastizität" achten, indem ich Maschinen aus meinem Pool hinzufüge/entferne.ETL-Prozess zum Übertragen von Daten von einem Db zu einem anderen mit Apache Spark

Irgendwie denke ich, dass ich "Apache Spark auf Amazon EMR" verwenden kann, aber in der Vergangenheit habe ich Spark nur verwendet, um Daten auf HDFS/Hive zu behandeln, also nicht sicher, ob Daten von einem Db zu einem anderen übertragen werden Db ist ein guter Anwendungsfall für Spark - oder - ist es?

Antwort

0

ab Ihrer letzten Frage: „Nicht sicher, ob Daten von einem Db zu einem anderen Db Übertragung ein guter Anwendungsfall für Spark ist“:

Es ist innerhalb der Begrenzung des JDBC-Funken Anschluss. Es gibt einige Einschränkungen, z. B. die fehlende Unterstützung für Aktualisierungen und die Parallelität beim Lesen der Tabelle (erfordert die Aufteilung der Tabelle nach einer numerischen Spalte).

Angesichts der IO-Kosten und der Gesamtleistung von RDBMS klingt das Ausführen der Jobs im FIFO-Modus nicht nach einer guten Idee. Sie können jeden einzelnen Job mit einer Konfiguration senden, die 1/x Clusterressourcen erfordert, sodass x Tabellen parallel verarbeitet werden.

+0

Was passiert, wenn ich einen Job (Spark-Programm) für jede DB-Instanz von SQL Server & innerhalb dieses Programms einen Thread für jede der 100 Tabellen erstellen? Jeder Thread aktualisiert die angegebene Tabelle. Würde Spark die Last auf verschiedene Maschinen verteilen, wenn diese Threads gleichzeitig ausgeführt werden? – DilTeam

+0

Spark Waagen können gut mit Datenquellen, die gut beim Lesen skalieren, in RDBMS ist es oft nicht der Fall. Kurze Antwort, wenn Funke Ihre Ausführung verteilen wird, ist JA, aber Sie sollten verstehen, wie der Verbinder/Funke die Parallelität ausführt, um Ihre eigenen Optimierungen durchzuführen, die in einer Funkenanwendung ausgeführt werden können. –

Verwandte Themen