の下に私のプロセス&問題を参照してください:私は 「INCREMENTALアペンドチェック欄を使用して増分データをインポートするSQOOPを使用しています最初の増分fashion.Soに1つのMySQLのテーブルのデータをロードしたいSTEP1 -I 最後の値 ' これをHDFSフォルダ'/sqoopdir1 'に保存すると仮定します ステップ2 - 重複チェックのようなデータ検証を行うためにブタスクリプトを使用したいと思います。結果は'/user/root/pigdir 'に移動します ステップ3 - 私は豚の出力ディレクトリを "textfile location/user/root/pigdirとして保存"と指定したハイブ外部テーブル 'extsample'を作成します。ハイブ外部表増分ロード
私の問題はです(1)SQOOPは、HDFSのフォルダ/ sqoopdir1にpart-m-00001、part-m-00002などを作成しますが、インクリメンタルプロセスごとに、PIGプロセスが自動的に選択するための最新ファイルが必要です。 (2)別の問題点は、PIGがpart-r-00000ファイルを/ user/root/pigdirに作成することです。 2回目のジョブでファイルが既に存在すると言って失敗するので、PIGジョブを実行するためにファイルの名前を変更する必要があります。
要するに、最終的なハイブテーブルに最初に読み込まれたデータ+挿入された/更新されたレコードが必要です。私は初心者ですから、上記の問題を解決するか、より良いアプローチをアドバイスしてください。
こんにちはSQOOP増分APPENDなので、同じフォルダにpart-m-00001、part-m-00002などのような複数のファイルを持つことができます – user6392682
次に、特定のインクリメンタルデータを保持するステージングフォルダが必要な場合がありますそれをPigスクリプトに渡そうとするか、タイムスタンプに基づいたロジックを使って最新のインクリメンタルファイルを取得し、Pigスクリプトにフィードしてみてください。 –
謝辞を書いてありがとうございます。 ?もしそうなら、あなたは豚を使っていくつかの有効なデータ検証の例を(重複除去のように)教えていただけますか?また、ステージングテーブルは、特定の日付のインクリメンタルデータだけを格納する外部テーブルでなければなりませんか?ステージングテーブルのデータを操作する必要がありますか、インクリメンタルデータを格納するためにのみ使用されますか? – user6392682