Hbase фильтрует столбец со списком значений

#java #scala #hbase

#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:

Вот решение, которое я нашел, с 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)