Performance Hadoop MapReduce中的方法v类级变量
这是一个关于map reduce步骤中可写变量的性能和分配的问题。这是一个减速器:Performance Hadoop MapReduce中的方法v类级变量,performance,hadoop,mapreduce,Performance,Hadoop,Mapreduce,这是一个关于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 : valu
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));
}
}
}
静态公共类MyReducer扩展了Reducer{
@凌驾
受保护的void reduce(文本键、Iterable值、上下文){
用于(文本值:值){
编写(键,新文本(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);
}
}
}
静态公共类MyReducer扩展了Reducer{
私有文本myText=新文本();
@凌驾
受保护的void reduce(文本键、Iterable值、上下文){
用于(文本值:值){
myText.set(val);
context.write(key,myText);
}
}
}
在Hadoop权威指南中,所有示例都是第一种形式,但我不确定这是因为代码示例较短,还是因为它更惯用。本书可能使用第一种形式,因为它更简洁。然而,它的效率较低。对于大型输入文件,该方法将创建大量对象。过度创建对象会降低性能。就性能而言,第二种方法更可取 讨论此问题的一些参考资料:
- 提示7:
- 在,和
- 这个