这是一个关于 map reduce 步骤中可写变量和分配性能的问题。这是一个减速器:
static public class MyReducer extends Reducer<Text, Text, Text, Text> {
@Override
protected void reduce(Text key, Iterable<Text> values, Context context) {
for (Text val : values) {
context.write(key, new Text(val));
}
}
}
或者这在性能方面是否更好:
static public class MyReducer extends Reducer<Text, Text, Text, Text> {
private Text myText = new Text();
@Override
protected void reduce(Text key, Iterable<Text> values, Context context) {
for (Text val : values) {
myText.set(val);
context.write(key, myText);
}
}
}
在 Hadoop Definitive Guide 中,所有示例都采用第一种形式,但我不确定这是用于较短的代码示例还是因为它更符合习惯。