0

Hadoop mapreduce を実装しています。マップへの私の入力は、以下に示す表です。

カスタマー ID、IP、属性、日付

顧客1、IP1、属性1、日付1

顧客2、IP2、属性1、日付2

マッパーからの出力は複数のファイルである必要があります

ファイル 1 : IP-m-00000

キー、値

顧客1_IP1、日付1

顧客2_IP2、日付2

ファイル 2: Attr-m-00000

キー、値

customer1_attr1 , date1

customer2_attr1 、date2

Hadoop 2.2.0 がインストールされており、次のコードを使用しています

MultipleOutputs.addMultiNamedOutput (job, "IP", TextOutputFormat.class, Text.class, Text.class); //  in the Driver.class
MultipleOutputs.getCollector("IP", context).collect(txtKey, txtValue); // in the Mapper.class

ここで、txtKey は customerid_$Attribute、txtValue は日付です。

別のパーソナル マシンに 2.8.0 をインストールしましたが、MultipleOutputs オブジェクトには、実装が非常に簡単な書き込み機能があります。hadoop-2.8.0 にある MultipleOutputs.write() は、hadoop-2.2.0 では実装されていません。

MultipleOutputs.write() 機能がない Hadoop-2.2.0 で multipleOutput ファイルを書き込む方法についてのアイデアはありますか?

この質問に変更が必要な場合は、質問を閉じずにコメントしてください。

ありがとう、達人

4

1 に答える 1

0

上記のコードには addMultiNamedOutput() メソッドが含まれています。このメソッドは、複数レベルの出力がある場合に使用されます。代わりに .addNamedOutput() メソッドを使用すると、hadoop-2.2.0 で機能しました。

Attr-m/r-00000 が必要な場合は、 .addNamedOutput() メソッドを使用します。Attr-SubAttr-m/r-00000 が必要な場合は、.addMultiNamedOutput() メソッドを使用します。

于 2017-05-18T21:07:15.850 に答える