多个扫描对象上的HBase Mapreduce

Sta*_*low 3 hbase mapreduce

我正在尝试评估HBase我们正在做的一些数据分析.

HBase将包含我们的事件数据.键将是eventId + time.我们希望在日期范围之间对少数事件类型(4-5)运行分析.事件类型总数约为1000.

在hbase表上运行mapreduce作业的问题是initTableMapperJob(见下文)只需要1个扫描对象.出于性能原因,我们希望在给定日期范围内仅扫描4-5种事件类型的数据,而不是1000种事件类型.如果我们使用下面的方法,那么我想我们没有那个选择,因为它只需要1个扫描对象.

public static void initTableMapperJob(String table,Scan scan,Class mapper,Class outputKeyClass,Class outputValueClass,org.apache.hadoop.mapreduce.Job job)抛出IOException

是否可以在扫描对象列表上运行mapreduce?任何解决方法?

谢谢

Dav*_* L. 9

TableMapReduceUtil.initTableMapperJob将您的工作配置为使用TableInputFormat哪个,如您所述,需要一个Scan.

听起来你想扫描一个表的多个部分.要做到这一点,你必须创建自己的InputFormat东西,比如MultiSegmentTableInputFormat.扩展TableInputFormatBase并覆盖该getSplits方法,以便super.getSplits为表的每个开始/停止行段调用一次.(最简单的方法是TableInputFormatBase.scan.setStartRow()每次).将InputSplit返回的实例聚合到单个列表中.

然后自己配置作业以使用您的自定义MultiSegmentTableInputFormat.