我有一个包含数百万行的表,我需要能够选择包含特定前缀的行..我可能需要扫描几百个+前缀。这些前缀中的每一个最多可能影响10行。根据我的经验,扫描总是比过滤器更加紧凑,因此我希望有一种方法可以扫描多个范围,而不是为每个范围添加PrefixFilter。有没有办法在hbase中执行此操作,或者至少是PrefixFilters的更好替代方法?
答案 0 :(得分:2)
看起来您正在寻找 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);