HBASE-如何在HBASE中使用SingleColumnValueFilter应用“喜欢”过滤器操作?

时间:2018-10-17 12:26:03

标签: hbase

我在HBASE表中有一列,其每个单元格包含多个值(更准确地说是复合值),如下所示:

单元格中的样本值:

'2018-10-15=33|2018-10-16=56'

基本上是键值对的集合,键为日期,值为计数。键值对由管道字符定界。

我想对此HBASE表运行扫描(最好使用SingleColumnValueFilter),以查找上面给定列的单元格具有任何特定日期(例如2018-10-15)的所有行。请注意,所讨论的列不是行键。

为了更加清楚我的要求,SQL中的类似操作如下所示:

WHERE COLUMN_X LIKE '%2018-10-15%'

如何在HBASE中为此扫描设置过滤器?

我找不到像  下面提到的一个:

org.apache.hadoop.hbase.filter.CompareFilter.CompareOp.LIKE

请帮助。

1 个答案:

答案 0 :(得分:1)

您可以将SubstringComparator与ValueFilter一起使用。

<table cellspacing="0">
  <tr>
    <td>a</td>
    <td>b</td>
    <td>c</td>
  </tr>
  <tr>
    <td>a</td>
    <td>
      <div>
        abcdefg
      </div>
      <div>
        abcdefg
      </div>
    </td>
    <td>c</td>
  </tr>
  <tr>
    <td>a</td>
    <td>b</td>
    <td>c</td>
  </tr>
</table>

如果要用Java实现,可以使用以下命令:

scan 'yourtable', { COLUMNS => 'cf:COLUMN_X ', FILTER => "ValueFilter(=, 'substring:2018-10-15')"}

在这里您可以找到有关如何使用比较器和过滤器的更多详细信息: http://hbase.apache.org/0.94/book/client.filter.html