Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Hadoop MapReduce中的方法v类级变量_Performance_Hadoop_Mapreduce - Fatal编程技术网

Performance Hadoop MapReduce中的方法v类级变量

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

这是一个关于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));
        }
      }
}
静态公共类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:
  • 在,和
  • 这个

是的,如果reducer需要处理大量数据,则第二种方法更可取。第一种方法是继续创建引用,并根据垃圾收集器清理引用