为多个表生成hfiles以在单个map reduce中批量加载

时间:2014-08-12 17:57:50

标签: java mapreduce hbase

我正在使用mapreduceHfileOutputFormat来生成hfiles,并将它们直接批量加载到hbase表中。

现在,在阅读输入文件时,我想为两个表生成hfiles,并在单个mapreduce中批量加载输出。

我在网上搜索了一些关于MultiHfileOutputFormat的链接,但找不到真正的解决方案。

你认为有可能吗?

1 个答案:

答案 0 :(得分:0)

我的方式是:

  1. 使用HFileOutputFormat,当作业完成后,doBulkLoad写入table1。
  2. 设置一个List put in mapper,以及一个MAX_PUTS值in global。
  3. puts.size()>MAX_PUTS时,请执行:

    String tableName = conf.get("hbase.table.name.dic", table2); 
    HTable table = new HTable(conf, tableName);
    table.setAutoFlushTo(false);
    table.setWriteBufferSize(1024*1024*64);             
    table.put(puts);
    table.close();
    puts.clear();
    

    注意:你的桅杆有一个清理功能来写左侧放置。