0

サイズが1TBのファイルがあります。そして、ファイル内の4つの列の個別の値を見つける必要があります。たとえば、列A、B、C、D、E、Fなどがある場合。その中で、列Aですべての個別の値を見つけて、HDFSで1つのファイルを作成する必要があります。B、C、Dについても同様です。

注:これは、残りの列ではなく、4つの列に対してのみ実行する必要があります。ファイルには合計300列あります。

このためにMapReduceを作成する必要があります。この問題に対処するための効果的な方法は何でしょうか。あなたの助けに感謝。ありがとう。

4

2 に答える 2

1

マッパーに、一意の値が必要な各列のレコードを出力させます。したがって、この例では、マップは(単一の入力レコードを使用して)キーがA、B、C、Dである4つのレコードを出力します。

レデューサーでは、すべての値を処理できます。

必要なものの詳細によっては、「A:列Aの値」のようなキーを使用することをお勧めします。

于 2013-02-24T07:02:23.593 に答える
0

基本的に、重複するレコードを除外する必要があります。これは、マッパー、コンバイナー、レデューサーから開始するいくつかの手順で実行できます。また、javaSetを使用することもできます。マッパーはkey='列A'値='完全なレコード'を出力できます。セットにキーが含まれている場合、レコードを発行しない場合は、キーをセットに保存します。コンバイナでも同じことができます。そして、あなたはレデューサーを必要としないかもしれません。また、Setが特定のサイズをクリアしてメモリ不足エラーを発生させないように、ワークアウトする必要があります。

于 2013-02-25T15:46:50.567 に答える