我的Map程序需要发送以下元组:
<custID,prodID,rate>
我想把custid作为键发送给reducer,把prodid和rate作为值一起发送,因为reduce阶段需要它们。哪种方法最好?
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException {
String[] col = value.toString().split(",");
custID.set(col[0]);
data.set(col[1] + "," + col[2]);
context.write(custID, data);
}
public void reduce(Text key, Iterable<Text> values, Context context)
throws IOException, InterruptedException {
for (Text val : values) {
String[] temp = val.toString().split(",");
Text rate = new Text(temp[1]);
result.set(rate);
context.write(key, result);
}
}
2条答案
按热度按时间zhte4eai1#
最好的方法是编写定制的可写内容
这是双重价值。您可以将其更改为文本或字符串
从mapper你可以发射出
希望这有帮助。
hjqgdpho2#
我能想到的最简单的方法就是把它们合并成一个字符串:
然后,在减速器上分开。
如果你从你的Map器中发布更多的代码,也许我们可以给出一个更好的例子。
更新:也就是说,你要求最好的方法。最正确的方法可能是创建一个单独的类分组
prodID
以及rate
一起送过去。