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