我有MyMappep
和MyReducer
类是从Mapper
和Reducer
apache hadoop clases扩展而来的,它具有重载的map&reduce方法。
映射后,我得到了pair(key,value),其中value是文本格式,并且包含类似“ 0,1,1,0,0,1,0,1”的内容。因此,问题是-如何按元素减少这种价值?
例如,我的意思是从“ 0,1,1,0,0,1,0,1”和“ 1,1,1,1,1,1,1,1,1”变成“ 1,2 ,2,1,1,2,1,2“。还是应该通过将值转换为其他更易于减少的格式来简化我的地图方法?
我不确定我是否理解您的问题。如果您同时共享-地图阶段的键和值,以及如何减少它们,那将很棒。
您可以在映射阶段本身中调用reduce逻辑(使用combiner
)。组合器仅在映射阶段运行,并执行与reducer相同的逻辑,并帮助优化映射和简化阶段之间网络上的数据移动。
这可以通过在job.setCombinerClass
中用化简器类名称设置属性driver class
来完成。
Job job = Job.getInstance(conf, "Your job name");
job.setJarByClass(DriverClassName.class);
job.setMapperClass(YourMapperClass.class);
job.setReducerClass(YourReducerClass.class);
job.setCombinerClass(YourReducerClass.class);
...
让我知道它是否对您有用。