2016-05-16 5 views
0

これまで、インポートコマンドを使用してデータをインポートしていましたが、デフォルトのメタストアに - last-valueを保存しています。--last-valueがsqoopメタストアに格納された増分インポートを使用する方法

  1. 最後に変更された値に基づいてインクリメンタルインポートのインポートコマンドで--last-valueに最初に指定するもの。私はそれが付加モードのために0だと思うが、それはlastmodifiedモードであるべきであるか。

  2. 私はデータを段階的にインポートする必要がありますが、このテーブルのmodified_atフィールドは外部キーで参照される別のテーブルに格納されています。ここには複数のテーブルが含まれているので、私は無料のクエリフォームを使用する必要があることを理解していますが、metastoreから--last-valueをどのくらい正確に取得しますか?私はもちろん、フリークエリの最後の値をハードコードするつもりはありません。

また、この参照先のテーブルからmodified_at列を提供するにはどうすればよいですか?

この場合、正確な構文はどうでしょうか?

答えて

-1

増分データフェッチは主キーに依存し、主キーは常に増分フォーマットになります。あなたは、あなたがリストを見ることができます

sqoop job --list 

を行うことによって、インポートコマンドでSqoopジョブを作成し、テーブルの最後の主キー値の値

sqoop job --create Job_name -- import --connect "jdbc_url" --username "uid" -P --table "table_name" --check-column "primary-key column" --incremental append --last-value 0 --target-dir /hdfs_path 

として--last-value引数を与えることができます作成されたジョブのあなたは

sqoop job --exec jobname 

して、ジョブを実行することができ、ITに役立ちます場合は私に知らせてください!!!!

+0

増分データは主キーに依存しません。これは、DateまたはTimestampのみに依存します。 – Ishpreet

+0

テーブルにタイムスタンプ列がない場合、インクリメントはどのように機能しますか? –

+0

データフェッチは、プライマリキーではなくタイムスタンプに依存します。したがって、チェック列は必ずしもプライマリキーではないタイムスタンプまたは日付でなければなりません! – Ishpreet

関連する問題