2013-10-10 129 views
1

我有一個有數百萬行的表格,我需要能夠選擇包含某個前綴的行。可能會有幾百個前綴我想要掃描。每個這些前綴最多可影響10行。在我的經驗中,範圍掃描總是比過濾器快很多,所以我希望有一種方法可以掃描多個範圍,而不是爲每個範圍添加PrefixFilter。有沒有什麼辦法可以做到這一點,或者至少PrefixFilters更好的選擇?Hbase多範圍掃描?

回答

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); 

這是API,這是相關的ticket

+0

有沒有辦法做到這一點只是返回結果?理想情況下,我想生成一個ResultScanner,它將包含指定行範圍內的所有結果。 – user2623855