Задание по уменьшению карты hadoop с входом HDFS и выходом HBASE

Я новичок в hadoop. У меня есть задание MapReduce, которое должно получать входные данные из Hdf и записывать выходные данные редуктора в Hbase. Я не нашел хорошего примера.

Вот код, ошибка при запуске этого примера - Несоответствие типа в карте, ожидаемый ImmutableBytesWritable получен IntWritable.

Mapper Class

public static class AddValueMapper extends Mapper < LongWritable,
 Text, ImmutableBytesWritable, IntWritable > {  

  /* input <key, line number : value, full line>
   *  output <key, log key : value >*/  
public void map(LongWritable key, Text value, 
     Context context)throws IOException, 
     InterruptedException {
  byte[] key;
  int value, pos = 0;
  String line = value.toString();
  String p1 , p2 = null;
  pos = line.indexOf("=");

   //Key part
   p1 = line.substring(0, pos);
   p1 = p1.trim();
   key = Bytes.toBytes(p1);   

   //Value part
   p2 = line.substring(pos +1);
   p2 = p2.trim();
   value = Integer.parseInt(p2);

   context.write(new ImmutableBytesWritable(key),new IntWritable(value));
  }
}

Reducer Class

public static class AddValuesReducer extends TableReducer<
  ImmutableBytesWritable, IntWritable, ImmutableBytesWritable> {

  public void reduce(ImmutableBytesWritable key, Iterable<IntWritable> values, 
   Context context) throws IOException, InterruptedException {

         long total =0;
         // Loop values
         while(values.iterator().hasNext()){
           total += values.iterator().next().get();
         }
         // Put to HBase
         Put put = new Put(key.get());
         put.add(Bytes.toBytes("data"), Bytes.toBytes("total"),
           Bytes.toBytes(total));
         Bytes.toInt(key.get()), total));
            context.write(key, put);
        }
    }

У меня была аналогичная работа только с HDFS, и она отлично работает.

Отредактировано 18-06-2013 . Проект колледжа успешно завершился два года назад. Для конфигурации задания (часть драйвера) проверьте правильный ответ.

10
задан ROMANIA_engineer 2 December 2017 в 07:45
поделиться