2016-12-29 10 views
1

カラム(emp_id、emp_name、emp_age、emp_update_ts)を持つ従業員テーブルがあると仮定すると、updat_tsフィールドは、テーブルに更新があるたびに現在のタイムスタンプに自動的に更新されます。私の質問は次のとおりです:SQOOPインクリメンタルインポート:行がデータベースから削除されたときにデータをどのように処理するか?

テーブル内の行を更新/挿入し、増分sqoopインポートをlastmodifiedで実行すると、データベースとhdfsが同期しますが、「データがテーブルから削除されたら最後に変更されたオプションでsqoopのインクリメンタルを実行しますか?HDFSからデータを削除して同期を維持するかどうか、または削除状況を処理できる方法が他にありますか?

答えて

1

SQOOPインクリメンタルは "DELETE"レコードがソースシステムで「削除済み」とマークされていない限り、Hortonworksが作成した非常に興味深いdocumentが説明しています。

削除されたレコードを取得していないテーブルのメンタルです。あなたは、ほとんどのトランザクションデータベースにこれらのどれが存在するのか驚くでしょう。

"DELETE"がある可能性がある(インジケータがない)場合、ステージング領域内のデータセット全体をインポートし、削除されたレコードを識別するためにHIVEで "diff"クエリを実行します。

この「diff」を実行するHQLクエリについてはpostを参照してください。

2

SQOOPは単なるインポート/エクスポートツールです。削除されたデータはチェックされません。 インポート/エクスポートプロセスが完了したら、クエリーを書くことによって両方のdbを手動で比較する必要があります。

データセットが小さい場合は、impalaからcsvでインポートして確認できます。

関連する問題