2017-01-11 8 views
0

を使用してHadoopのためにインポート中のSQL Serverで削除されたレコードを識別するために、どのように、私たちは、新たに増分追加したり、最後に変更またはいくつかの無料を使用してレコードまたは変更されたレコードを追加取得することができますフォームクエリ。Sqoopを使用してHadoopのために、SQLサーバーまたは任意のRDBMSデータベースからデータをインポートしながらSqoop

削除されたレコードを特定できますか?レコードが削除されるときには、SQLテーブルには存在しません。

一つの回避策は、Sqoopを使用して、完全なテーブルをロードし、ハイブの前のテーブルと比較することです。

その他の方法はありますか?

答えて

0

いいえ、sqoopを使用して削除されたレコードを取得することはできません。

より良い回避策は次のようになります。

お使いのSQL Serverのテーブルにbooleanフィールドstatus(デフォルトtrue)を作成します。

あなたがそのレコードを削除する必要があるときは、ステータスfalseをマーキングしてちょうど更新を削除しないでください。

あなたはlast-modified増分インポートを使用している場合は、これはHDFS内のデータを変更されます。

(sqqopインポート後)これらのレコードをすべてステータスfalseで削除することができます。

+0

ありがとうございました。ソースは別のシステムで、制御権がありません。だから私はこのアプローチが私の場合には適していないと思う。 – Naveen

0

あなたはパーティション全体またはテーブルを同期しているなら、あなたは、既存のターゲットパーティションまたはテーブルを結合する完全な使用してそれらをマージする前にsqoopのインポート後に削除されたレコードを識別することができます。インポートされたデータに存在しないターゲットテーブル/パーティションに存在するレコードは、前回の同期以降にソースデータベースで削除されたレコードです。

0

インクリメンタルsqoopingは、削除されたレコードをそのまま処理しません。考慮すべき2つのアプローチがあります。

このpostをご覧下さい。

関連する問題