HBase Несколько PrefixFilters + setLimit - PullRequest
0 голосов
/ 07 мая 2018

У меня есть список префиксов строк. Я хотел бы запросить N строк для каждого префикса.

Я не могу использовать MultiRowRangeFilter, потому что я не знаю, каков конечный префикс rowkey для диапазона. Также я не могу использовать scan.setLimit (N), поскольку я думаю, что он ограничит общее количество строк, запрошенных до N (я хотел, чтобы каждый префикс имел N строк) .

Моя текущая настройка:

val hbaseConf = HBaseConfiguration.create()
// set zookeeper quorum properties in hbaseConf

val hbaseContext = new HBaseContext(sc, hbaseConf)

val rowPrefixes = Array("a", "b", "c")
val filterList = new FilterList()

rowPrefixes.foreach { x => filterList.addFilter(new PrefixFilter(Bytes.toBytes(x))) }

var scan = new Scan()  

scan.setFilter(filterList)
scan.addFamily(Bytes.toBytes("myCF"));

val rdd = hbaseContext.hbaseRDD(TableName.valueOf("tableName"), scan)
rdd.mapPartitions(populateCaseClass)

Я не уверен, какой фильтр использовать для достижения нескольких префиксов rowkey + setLimit для каждого rowkey ...

...