2016-07-22 9 views
0

こんにちは、sqoopコネクタ経由でMySQLからhdfsにデータをロードしました。既存のデータ間の行が更新された場合、sqoop内の既存の行のデータ値を更新するためのクエリはありますか?私はインクリメンタルアップデートについて知っていますか?インクリメンタルアップデートでは既存のローもアップデートされますか?私はsqoopを初めて使っていますか?sqoopのインクリメンタルアップデート

答えて

0

はい、インクリメンタルインポートを実行するときは、lastmodifiedモードを使用する必要があります。 documentationによれば:

Sqoopでサポートされている代替テーブル更新戦略は LASTMODIFIEDモードと呼ばれます。ソーステーブル の行が更新される可能性があり、そのような各更新によって、最後に変更された列 の値が現在のタイムスタンプに設定されます。チェック の列に、 - last-valueで指定されたタイムスタンプよりも新しいタイムスタンプが格納されている行がインポートされます。

インクリメンタルインポートの最後に、 の値が、後でインポートするために--last-valueとして指定されている場合、 の画面に出力されます。後続のインポートを実行する場合は、新しいデータまたは更新されたデータのみをインポートするために、 --last-valueをこのように指定する必要があります。これは、増分インポート を保存されたジョブとして作成することによって自動的に処理されます。これは、定期的なインクリメンタルインポートを実行するための好ましいメカニズムです。詳細については、この文書の の保存されたジョブのセクションを参照してください。このモードでは、日付値(のようなdatetimedatetimetimestamp)を保持している列が必要であることを念頭に置いて

ベア。

This answerは、merge-keyを使用して既存の値の代替インポート方法を示しています。