2012-03-23 81 views
0

我對hadoop和hbase頗有新意。但是,我測試了我的Hbase並且Hadoop正在運行。我陷入錯誤消息通過一個put或一個刪除。我的地圖階段從hbase表「dsite」中讀取幾行文本行,並將它們傳遞給Reducer,它應該將它們寫入不同的表中。無論我做什麼,我總是得到相同的「通行證看跌或刪除」 ..通過推銷或刪除。 Hbase和Hadoop

例子的Ive看犯規幫助..我不使用迭代或迭代器等

任何提示就可以了..

我的代碼是:

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的,但你減速的鍵值對ImmutableBytesWritable -> Put類型的讀取。這不能工作,因爲映射器的輸出必須與reducer輸入的輸入類型相同。您應該

  • 改變你的映射器輸出Put對象和調整方法和類的簽名
  • 或改變減速簽名允許一個結果對象作爲價值。