Spark上下流データチェック及び再処理方法
需要シーンは以下の通りである:上流mysqlデータベースは毎日sqoopを経てhive中のパーティションテーブルにインポートされ、インポート中にsqoopはたまにerrorなどの問題が発生し、下流データと上流データにばらつきが発生し、現在は方法でデータを検証し、データを再走する必要があり、考慮した後、再ブラシで処理することにした.
データしつりょうチェツク
1.countを使用して数量上の検査を行い、上下流の同じロットのデータ数が同じ場合、処理を行う必要がない2.上下流のデータ量が異なる場合、下流のデータを再ブラシする
データブラシ
sparkは、上下流の同じロットの2つのデータセットを読み出してfull outer joinを求めることによって、対応するフィールドのnull値を比較し、以下にシミュレーションデータセットを与える
上流データセットA
下流ストリームデータセットB
2つの結果セットに対してfull outer joinを行う
解析結果:1.Bidで空、すなわち下流欠落データ上流からAidに従って再構築2.Aidで空、すなわち下流に余分なデータを生成下流から対応データを削除
データしつりょうチェツク
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で空、すなわち下流に余分なデータを生成下流から対応データを削除