Hbase整合MapReduce兩個注意的地方
阿新 • • 發佈:2018-12-18
一、通過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叢集檔案系統