2

非常に大きなテキスト ファイル (サイズが 5 TB など) のデータを処理する必要があります。処理ロジックは、supercsv を使用してデータを解析し、いくつかのチェックを実行します。明らかにサイズが非常に大きいため、並列計算を利用するために Hadoop を使用することを計画しました。マシンに Hadoop をインストールし、マッパーとリデューサーのクラスを書き始めましたが、行き詰まりました。マップにはキーと値のペアが必要なため、このテキスト ファイルを読み取るには、この特定のシナリオでキーと値がどうあるべきかわかりません。誰かがそれを手伝ってくれますか。

私の思考プロセスは次のようなものです(私が正しいかどうか教えてください) 2) これらの supercsvbean ごとに、チェック ロジックを実行します。

4

1 に答える 1

3

データは改行で区切られていますか? つまり、改行文字ごとにデータを分割した場合、各チャンクは常に単一の完全なレコードになりますか? これは、superCSV がテキストをエンコードする方法と、実際のデータに改行文字が含まれているかどうかによって異なります。

もし、そうなら:

TextInputFormat を使用するだけです。バイトオフセットをマップキーとして、行全体を値として提供します(と思います)。キーを無視して、superCSV を使用して行を解析できます。

いいえの場合:

独自のカスタム InputFormat を作成する必要があります - ここに良いチュートリアルがあります: http://developer.yahoo.com/hadoop/tutorial/module5.html#fileformat。キーと値の正確な詳細は、マッパー入力にとってはあまり重要ではありません。必要な実際のデータが 2 つのうちの 1 つに含まれていることを確認してください。それらの 1 つのタイプとして NullWritable を使用することもできます。

于 2012-10-25T23:00:45.223 に答える