Hallo Ich habe eine Daten von MySQL auf hdfs über sqoop-Anschluss geladen. Was nun, wenn die Zeile zwischen den vorhandenen Daten aktualisiert wird, gibt es eine Abfrage, um den Datenwert der bestehenden Zeile in shoop zu aktualisieren. Ich bin mir der inkrementellen Aktualisierung bewusst, wird die inkrementelle Aktualisierung auch die vorhandene Zeile aktualisieren? Ich bin neu zu sqoop?Inkrementelles Update in sqoop
Antwort
Ja, aber Sie sollten den Modus lastmodified
verwenden, wenn Sie Ihre inkrementellen Importe durchführen. Nach dem documentation:
Eine alternative Tabellenaktualisierungsstrategie von Sqoop unterstützt wird LastModified Modus bezeichnet. Sie sollten dies verwenden, wenn Zeilen der Quelltabelle aktualisiert werden können, und jede solche Aktualisierung wird den Wert einer zuletzt geänderten Spalte auf den aktuellen Zeitstempel setzen. Zeilen, in denen die Spalte prüft, enthält einen Zeitstempel, der jünger ist als der Zeitstempel, der mit --last-value angegeben wurde.
Am Ende eines inkrementellen Imports wird der Wert , der für einen nachfolgenden Import als --last-Wert angegeben wird, auf den Bildschirm gedruckt. Wenn Sie einen nachfolgenden Import ausführen, sollten Sie auf diese Weise --last-value angeben, um sicherzustellen, dass Sie nur die neuen oder aktualisierten Daten importieren. Dies wird automatisch erledigt, indem ein inkrementeller Import als gespeicherter Job erstellt wird. Dies ist der bevorzugte Mechanismus zum Durchführen eines wiederkehrenden inkrementellen Imports . Weitere Informationen finden Sie im Abschnitt über gespeicherte Jobs später in dieses Dokument.
Beachten Sie, dass dieser Modus eine Spalte erfordert, die einen Datumswert (wie date
, time
, datetime
und timestamp
) hält.
This answer zeigt eine alternative Importstrategie für vorhandene Werte unter Verwendung von merge-key
.