Hbase 用值列表过滤一列
Hbase filter a column with list of values
如何将值列表传递给 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 个元素。
提前致谢
这是我找到的解决方案,使用 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)
如何将值列表传递给 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 个元素。
提前致谢
这是我找到的解决方案,使用 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)