Hadoop で ArrayList 型 ( aggValuesと呼ばれる) のフィールドを持つカスタム書き込み可能 ( EquivalenceClsAggValueと呼ばれる) を定義しました。私のテスト データを使用すると、Mapper による各出力エントリのaggValuesのサイズは 2 です。ただし、Reducer でaggValuesのサイズを確認すると、サイズが異なります。つまり、サイズが累積されます (最初の要素のサイズは 2、2 番目の要素のサイズは 4、3 番目の要素のサイズは 6 など)。何が問題になる可能性がありますか?
これは、マッパーで出力する方法です。
EquivalenceClsAggValue outputValue = new EquivalenceClsAggValue();
.....
output.collect(new IntWritable(outputValue.aggValues.size()),outputValue);
そしてレデューサーで:
public void reduce(IntWritable key, Iterator<EquivalenceClsAggValue> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
while(values.hasNext()){
EquivalenceClsAggValue e = values.next();
output.collect(new Text(key.toString()), new IntWritable(e.aggValues.size()));
.....
出力は次のとおりです。
2 2
2 4
2 6