【发布时间】:2013-10-10 18:28:53
【问题描述】:
我有一个包含数百万行的表,我需要能够选择包含某个前缀的行。我可能想要扫描数百个前缀。这些前缀中的每一个最多可能影响 10 行。根据我的经验,范围扫描总是比过滤器快得多,所以我希望有一种方法可以扫描多个范围,而不是为每个范围添加 PrefixFilter。有没有办法在 hbase 中做到这一点,或者至少是 PrefixFilters 的更好替代方案?
【问题讨论】:
标签: hbase
我有一个包含数百万行的表,我需要能够选择包含某个前缀的行。我可能想要扫描数百个前缀。这些前缀中的每一个最多可能影响 10 行。根据我的经验,范围扫描总是比过滤器快得多,所以我希望有一种方法可以扫描多个范围,而不是为每个范围添加 PrefixFilter。有没有办法在 hbase 中做到这一点,或者至少是 PrefixFilters 的更好替代方案?
【问题讨论】:
标签: hbase
您似乎正在寻找 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);
【讨论】: