将HashMap从映射器直接传递到reducer

时间:2019-04-17 21:22:30

标签: hadoop hashmap mapreduce

我是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复制的数据,但显示为空。

0 个答案:

没有答案