Spark上下流データチェック及び再処理方法

3412 ワード

需要シーンは以下の通りである:上流mysqlデータベースは毎日sqoopを経てhive中のパーティションテーブルにインポートされ、インポート中にsqoopはたまにerrorなどの問題が発生し、下流データと上流データにばらつきが発生し、現在は方法でデータを検証し、データを再走する必要があり、考慮した後、再ブラシで処理することにした.
データしつりょうチェツク
1.countを使用して数量上の検査を行い、上下流の同じロットのデータ数が同じ場合、処理を行う必要がない2.上下流のデータ量が異なる場合、下流のデータを再ブラシする
データブラシ
sparkは、上下流の同じロットの2つのデータセットを読み出してfull outer joinを求めることによって、対応するフィールドのnull値を比較し、以下にシミュレーションデータセットを与える
上流データセットA
id  
1   data1  .....
2   data2  .....
3   data3  .....
4   data7  .....

下流ストリームデータセットB
id  
1   data1  .....
2   data2  .....
3   data3  .....
5   data5  .....
6   data6  .....

2つの結果セットに対してfull outer joinを行う
Aid  				Bid
1   data1  .....   1
2   data2  .....   2
3   data3  .....   3
4   data7  .....   null
null  null  .....  5
null  null  .....  6

解析結果:1.Bidで空、すなわち下流欠落データ上流からAidに従って再構築2.Aidで空、すなわち下流に余分なデータを生成下流から対応データを削除