HBase过滤带有值列表的列

时间:2019-03-11 22:34:28

标签: java scala hbase

如何将值列表传递给SingleColumnFilter进行hbase扫描和查询?

val ListOfID = List("ID1","ID2",...,"ID15",...,"ID150") 

我知道如何过滤一个值:

val IDFilter = new SingleColumnValueFilter(Bytes.toBytes("header"), Bytes.toBytes("ID"), CompareFilter.CompareOp.EQUAL, Bytes.toBytes(String.valueOf(ID)))

但是我想将值列表传递给过滤器,因为我的列表包含150多个元素。

预先感谢

1 个答案:

答案 0 :(得分:1)

这是我用RegexStringComparator找到的解决方案 它有效,但是我不知道它是否可以做到最好:

val ListOfID = List("ID1","ID2",...,"ID15",...,"ID150") 
val IDListString = ListOfID.mkString("|")

val scan = new Scan


val IDFilter = new SingleColumnValueFilter(Bytes.toBytes("header"), Bytes.toBytes("networkIdentifier"), CompareFilter.CompareOp.EQUAL,new RegexStringComparator(IDListString))

val filters = new FilterList(IDFilter)    
scan.setFilter(filters)