1

我有一个包含数百万行的表,我需要能够选择包含某个前缀的行。我可能要扫描数百个前缀。这些前缀中的每一个最多可能影响 10 行。根据我的经验,范围扫描总是比过滤器快得多,所以我希望有一种方法可以扫描多个范围,而不是为每个范围添加 PrefixFilter。有没有办法在 hbase 中做到这一点,或者至少是 PrefixFilters 的更好替代方案?

4

1 回答 1

1

看起来您正在寻找MultiTableInputFormat。它允许我们在一个表上提供来自多个扫描仪的数据。

使用示例:

Scan scan1 = new Scan(); 
scan1.setStartRow(start1); 
scan1.setStopRow(end1); 
Scan scan2 = new Scan(); 
scan2.setStartRow(start2); 
scan2.setStopRow(end2); 
MultiTableInputCollection mtic = new MultiTableInputCollection(); 
mtic.Add(tableName1, scan1); 
mtic.Add(tableName2, scan2); 
TableMapReduceUtil.initTableMapperJob(mtic, TestTableMapper.class,   Text.class, IntWritable.class, job1); 

这是API,这是关联的票证

于 2013-10-10T20:48:27.133 回答