2017-02-01 10 views
2

2つの大きなデータセットを比較できるリコンシリエーションツールを作成するように求められました。リコンシリエーションツール[2つの大きなデータセットの比較]

Excelの各行には40〜50列が含まれ、各列レベルで比較されるレコードです。各ファイルには300万件近くのレコードまたは約4〜5 GBのデータが格納されています[データはソート形式ではありません]

ヒントを得ることができたらうれしいです。 は、以下の技術が良いフィット

  1. Apacheのスパークすることができます
  2. Apacheのスパーク+のIgnite [時間フレームの間でのリアルタイムの調整を想定した]
  3. のApacheのIgnite + ApacheのHadoopの
  4. で実施構築するために、任意の提案 - ハウスツール。
+0

比較手段を詳しく教えてください。 –

+0

たとえば、各行が一致し、各行が一致せず、それについてのレポートを準備すると言う2つの大きなcsvの比較?もしそうなら、あなたはspark rdd loadを使うことができます(sc。テキストファイル)2つのファイルを2つのrddにまとめ、簡単な方法で比較してください。 –

+0

@@ Ramお返事ありがとうございます。これに加えて、レコード内のフィールドが一致しないレポートも作成する必要があります。 1.左ミス(つまり、右から欠けているcsv1レコード)2.右ミス(csv1からCSV2レコードが欠けている)3.両方のcsvファイルでレコードが使用可能な場合(レコードにはプライマリテーブル内のキー)をクリックします。 –

答えて

0

私はまた、あなたが作成した一時テーブルの上にPyspark /スカラ座とクエリを使用して一時テーブルにCSVファイルを読み込むことができsame-

に取り組んできました。

0

最初の警告:

調整ツールを書き込みは、ヘッダを無視する小さな厄介と日付形式のようなエッジの場合、数値形式(番号でコンマ、科学表記法など)、複合キー、しきい値、列を無視し、たくさんを含んでいます/フッターなど

入力が明確なファイルが1つしかない場合は、それを自分で行うことを検討してください。

しかし、それをより一般的なものに拡張しようとするなら、長期的には安くなる可能性があるので、既存のソリューションを支払う可能性がある場合。

潜在的な解決策:

分散プロセスの難点は、あなたがソートされていないファイルのキーと一致する方法です。

すべてを1つのプロセスで実行することの問題はメモリです。

私が市販のrecツールのために取ったアプローチは、h2のテーブルにCSVを保存し、SQLを使ってdiffを実行することでした。

H2は、これよりもはるかに高速です。

データがうまく構成されている場合は、h2をCSVから直接ロードする機能を利用することができます。また、結果をテーブルに保存すると、出力をCSVに書き込むこともできます。より構造化された出力、またはWebページへの結果のストリーム。

フォーマットがCSVではなくxls(x)の場合、そのサイズを扱う際に大きな違いがあるため、さまざまなライブラリのパフォーマンステストを実行してファイルを読み込む必要があります。

関連する問題