1. 程式人生 > >Hbase整合MapReduce兩個注意的地方

Hbase整合MapReduce兩個注意的地方

一、通過javaAPI插入資料到HBase時,HBase裡scan出來的資料亂碼,如下程式碼:

Put put = new Put(Bytes.toBytes(key.get()));

我這裡的key是Map階段的輸入key,格式為LongWritable,插入資料後,Hbase對應表的rowkey出現了亂碼。
解決方法:

Put put = new Put(Bytes.toBytes(key.toString()));

類似的,對於int,double同樣需要先轉為String,否則會亂碼

二、***********.jar is not a valid DFS filename
出錯程式碼如下:

TableMapReduceUtil.initTableMapperJob("example", scan, 
                MyMapper.class, Text.class, Text.class, job);
TableMapReduceUtil.initTableReducerJob("row", MyReduce.class, job);

原因:沒有區分本地檔案系統與Hadoop叢集檔案系統
修改:

TableMapReduceUtil.initTableMapperJob("example", scan, 
                MyMapper.class
, Text.class, Text.class, job,false); TableMapReduceUtil.initTableReducerJob("row", MyReduce.class, job,null,null,null,null,false);

就是新增後面的false引數,使得區分本地檔案系統與Hadoop叢集檔案系統