2016-06-01 3 views
0

Für inkrementelle Importe basierend auf einer Datumsspalte, wie extrahieren wir aktualisierte und neue Datensätze OHNE hartkodierendes vorheriges Datum (wir können nicht vorher jedes Datum in der Produktion hart codieren) Zum Beispiel Name Alter Update-Datum 32 ABC 2016.01.01 DEF 22 2016.04.03 GHI 77 2016.02.02SQOOP INCR load

nehme ich ersten Datensatz geladen 2016.01.01 mit Datum Sqoop in Vorbelastung verwenden und jetzt muss ich lade die nächsten 2 Datensätze ohne einen Datumswert (2016-01-01) in der SQOOP-Anweisung hartcodieren.

Antwort

0

Vielleicht ist es ein bisschen spät, aber um nicht jedes Mal den letzten Importwert eingeben zu müssen, können Sie den integrierten Sqoop-Metastore verwenden und einen Sqoop job erstellen, um das für Sie zu tun.

Zum Beispiel könnten Sie so etwas verwenden, um einen Job zu erstellen, der nach neuen Datensätzen sucht. Verwenden Sie dazu die Spalte dt der Tabelle updates.

sqoop job 
    --create update_job 
    --import 
    --connect jdbc:mysql://whatever/database 
    --username foo 
    --password bar 
    --table updates 
    --incremental lastmodified 
    --check-column dt 

Einmal erstellt, können Sie den Job ausführen kann, und jedes Mal, es läuft, wird es die Datensätze importieren aus dem letzten dt aus früheren Einfuhren erfasst Die:

sqoop job --exec update_job 

Here Sie können eine detailliertere überprüfen Beispiel.

+0

Danke Jaime.Dies hilft. – user6392682

+0

Ich bin froh, dass es geholfen hat :-) Bitte, überlege, ob du die Antwort akzeptierst, wenn du sie nützlich findest und an deine Bedürfnisse angepasst hast. –