передача HashMap напрямую из маппера в редуктор - PullRequest
0 голосов
/ 18 апреля 2019

Я очень новичок в Hadoop и работаю над уменьшением карты данных поезда.Я использовал HashMap, чтобы собрать некоторую сводку по каждому сопоставителю на этапе сопоставления.Теперь я хочу, чтобы этот HashMap использовался Reducer для некоторого типа вывода.

Другие данные, создаваемые каждым преобразователем, отправляются редуктору методом Context.write ().Но я не могу перепутать два типа данных.

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, но показывает пустой.

...