我在我的Mapper代码中有这个,其中“a”是DoubleWritable数组。
DoubleArrayWritable ad = new DoubleArrayWritable();
ad.set(a);
int row_id1=(int)row_id;
context.write(new LongWritable(row_id1),new Text(ad.toString()));
我只是将这些输入打印到 reducer 上作为 reducer 的输出,然后将其作为 reducer 的输出,
1 DoubleArrayWritable@e29820
2 DoubleArrayWritable@718242
3 DoubleArrayWritable@1ec58a
4 DoubleArrayWritable@3afb99
我想念什么?我想输出为
1 2 3 4 7
2 4 6 5 9
3 4 5 7 3
最佳答案
对于DoubleArrayWritable
类,我假设您正在使用this question的可接受答案中的代码。如果是这种情况,则需要实现toString
以所需的格式输出。也许像这样:
public String toString() {
if (data.length == 0) {
return "";
}
StringBuilder sb = new StringBuilder();
for (double d : data) {
sb.append(d).append(" ");
}
//trim the trailing space
sb.setLength(sb.length - 1);
return sb.toString();
}
如果您可以使用这样的格式:
您可以跳过
toString
方法,而是执行以下操作:context.write(new LongWritable(row_id1),new Text(Arrays.toString(ad.getData())));