1 回答

TA貢獻1784條經驗 獲得超2個贊
驅動函數實現
與WordCount的驅動類不同,在Job配置的時候沒有配置job.setMapperClass(),而是用以下方法執行Mapper類: TableMapReduceUtil.initTableMapperJob(tablename,scan,WordCountHbaseReaderMapper.class, Text.class, Text.class, job);
該方法指明了在執行job的Map過程時,數據輸入源是hbase的tablename表,通過掃描讀入對象scan對表進行全表掃描,為Map過程提供數據源輸入,通過WordCountHbaseReaderMapper.class執行Map過程,Map過程的輸出key/value類型是 Text.class與Text.class,最后一個參數是作業對象。特別注意:這里聲明的是一個最簡單的掃描讀入對象scan,進行表掃描讀取數據,其中scan可以配置參數,這里為了例子簡單不再詳述,用戶可自行嘗試。
詳細源碼請參考:WordCountHbaseReader\src\com\zonesion\hbase\WordCountHbaseReader.java
public static void main(String[] args) throws Exception {
String tablename = "wordcount";
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "Master");
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 1) {
System.err.println("Usage: WordCountHbaseReader <out>");
System.exit(2);
}
Job job = new Job(conf, "WordCountHbaseReader");
job.setJarByClass(WordCountHbaseReader.class);
//設置任務數據的輸出路徑;
FileOutputFormat.setOutputPath(job, new Path(otherArgs[0]));
job.setReducerClass(WordCountHbaseReaderReduce.class);
Scan scan = new Scan();
TableMapReduceUtil.initTableMapperJob(tablename,scan,WordCountHbaseReaderMapper.class, Text.class, Text.class, job);
//調用job.waitForCompletion(true) 執行任務,執行成功后退出;
System.exit(job.waitForCompletion(true) ? 0 : 1);
- 1 回答
- 0 關注
- 1041 瀏覽
添加回答
舉報