我是Hadoop的新手,正在研究火车数据的map-reduce。 我在映射阶段使用HashMap来收集每个映射器的一些摘要。 现在,我希望减速器使用此HashMap进行某种类型的输出。
每个映射器创建的其他数据通过Context.write()方法发送到reducer。但是我不能混淆两种数据。
public class ExcelMapper
extends Mapper<LongWritable, Text, Text, Text> {
Map<Text, Text> map1 = new HashMap<Text, Text>();//collects some
//summarised
//data from each mapper
public void map(LongWritable key, Text value, Context context)
throws InterruptedException, IOException {......}}
public class ExcelReducer extends Reducer<Text, Text, Text, Text> {
Map<Text, Text> map3 = new HashMap<Text, Text>();
ExcelMapper m1 = new ExcelMapper();
m1.map1.putAll(map3); //map3 is empty.
public void reduce(Text outputkey, Iterable<Text> outputvalue,
Context context) throws InterruptedException, IOException {...}}
map3应该显示从m1.map1复制的数据,但显示为空。