2012-03-23 2 views
0

Я совершенно новый с hadoop и hbase. Тем не менее, я тестировал свои Hbase и Hadoop. Я застрял с ошибкой. Msg Пропустите put или Delete. Фаза «Моя карта» читает несколько строк текста из таблицы «dsite» hbase и передает их в Reducer, который должен просто записывать их в другую таблицу. Независимо от того, что я делаю, я всегда получаю тот же «Передайте положить или на удаление» ..Пропустите Пойнт или Удалить. Hbase и Hadoop

Примеры Ive было смотреть не помогает .. Я не использую Iterable или итератор и т.д.

Любые советы будут отлично ..

Мой код:

static class Mapper12 extends TableMapper<ImmutableBytesWritable, Result> 
{ 
    public void mapper(ImmutableBytesWritable row,Result valuess,Context context) throws IOException 
    { 
     try { 
      context.write(row,valuess); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

public static class Reducer12 extends TableReducer<ImmutableBytesWritable, Put, ImmutableBytesWritable> 
{ 
    public void reducer(ImmutableBytesWritable key,Put values, Context context) 
     throws IOException, InterruptedException 
    { 
     Put put = new Put(); 

     put.add(Bytes.toBytes("url"), Bytes.toBytes("www"),Bytes.toBytes(values.toString())); 
     context.write(key,put); 
    } 
} 

ответ

0

кажется ваш картографа выводит ключ-значение пары типа ImmutableBytesWritable -> Result но ваш Reducer читает ключ-значение пары типа ImmutableBytesWritable -> Put. Это не может работать, так как вывод преобразователя должен быть того же типа, что и вход редуктора. Вы должны либо

  • изменить ваш картографа для вывода Put объекта и настроить метод и класс подписи
  • или изменить подписи редуктора, чтобы для объекта результата, как и в стоимости.
Смежные вопросы