2017-11-13 6 views
1

Ich habe einige sehr große Tabellen, die ich versuche, von einem Quellsystem Data Warehouse in HDFS zu shoop, aber begrenzte Bandbreite zu tun. Ich möchte nur die Spalten ziehen, die ich brauche, und die Laufzeit minimieren, um die Tabellen aufzustehen.Inkrementelle Sqoop für eine Tabelle ausführen, die Joins enthält?

Die Sqoop zieht zur Zeit etwas wie folgt aus:

SELECT 
    ColumnA, 
    ColumnB, 
    .... 
    ColumnN 
FROM 
    TABLE_A 
LEFT JOIN 
    TABLE_B 
ON 
    ... 
LEFT JOIN 
    TABLE_N 
.... 

ist es möglich, eine inkrementelle Sqoop, anwenden zu können, dass die Daten in einem Stern-Schema-Format gespeichert wird, und die Abmessungen unabhängig von den Fakten nicht aktualisieren ?

Oder ist die einzige Lösung, die gesamte Tabelle sqoop für die Spalten, die ich brauche, inkrementell, und führen Sie die Joins auf der HDFS-Seite?

Antwort

1

Für inkrementelle Importe müssen Sie --incremental Flag verwenden. Bitte beachten Sie folgenden Link für weitere Informationen: -

https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_incremental_imports

Sie -incremental angeben müssen Sqoop sagen, dass Sie eine inkrementelle Last -check-Säule, die Spalte angeben mögen für inkrementellen sqooping verwendet und -last -Wert um zu sagen, von welchem ​​Wert aus die nächste Ladung gestartet werden soll. Dies ist nur die Hälfte des Bildes. Es gibt mehrere Möglichkeiten, dies zu tun. Sie können die Option -query verwenden und Ihre Abfrage wäre wie Select * aus der Tabelle, wo Spalte> 123. Dies ist im Grunde das Gleiche. Sie müssten den letzten/maximalen Wert für die ausgewählte Spalte aufzeichnen und für den nächsten Import verwenden.

+1

In meinem Fall werde ich wahrscheinlich den letzten modifizierten Modus verwenden müssen? Die Verwendung der KEY wird definitiv nicht funktionieren. Ich werde die Quellentabellen dort auschecken. Gibt es eine Möglichkeit, mehrere Felder für die letzte Änderung zu verwenden? – boethius

+1

Okay, cool. Ich denke, das ist genug, um mich zum Laufen zu bringen - ich sehe viele Benutzer, die Probleme mit dem --incremental sqoop an sich haben, aber ich kann wenigstens anfangen. Wenn ich zukünftige Probleme habe, werde ich eine separate Frage stellen. – boethius