当前位置: 首页 > 知识库问答 >
问题:

在HBase中使用扫描,包括开始行、结束行和过滤器

张建华
2023-03-14

我需要在HBase中使用Scan来扫描满足某些条件的所有行:这就是为什么我要使用过滤器(实际上是一个包含两个SingleColumnValueFilter的复合过滤器列表)的原因。现在,我的rowKeys结构如下:

a.b.x|1|1252525  
a.b.x|1|2373273  
a.b.x|1|2999238  
...  
a.b.x|2|3000320  
a.b.x|2|4000023  
...  
a.b.y|1|1202002  
a.b.y|1|1778949  
a.b.y|1|2738273  
    null

提前感谢
Andrea

共有1个答案

谯乐池
2023-03-14

行键在HBase中排序(词法)。因此,所有的“a.b.x1”都会出现在“a.b.x2”之前,以此类推。由于行键存储为字节数组,并且按词典排序,所以对于非固定长度的行键以及在混合不同字符类时要小心。但是根据您的要求,这一行的内容应该是可行的:

Scan scan = new Scan(Bytes.toBytes("a.b.x|1"),Bytes.toBytes("a.b.x|2"); //creating a scan object with start and stop row keys

scan.setFilter(colFilter);//set the Column filters you have to this scan object.

//And then you can get a scanner object and iterate through your results
ResultScanner scanner = table.getScanner(scan);
for (Result result = scanner.next(); result != null; result = scanner.next())
{
    //Use the result object
}

更新:ToBytes应该是ToBytes

 类似资料:
  • 我在Mapper中进行HBase扫描,然后Reducer将结果写入HDFS。 映射器输出的记录数大约为1,000,000,000。 问题是化简器的数量总是一个,尽管我设置了 。减少过程非常缓慢。 //编辑时间:2016-12-04祝方泽 我的主类的代码: 以下是运行此MapReduce作业的脚本: 我设置了<code>作业。SETNUMREDUCTASKS(100) 在代码中,它起作用了。

  • 发生的事情 由于系统中的错误,上个月的所有数据都已损坏。所以我们不得不手动删除并重新输入这些记录。基本上,我想删除在某段时间内插入的所有行。但是,我发现很难在HBase中扫描和删除数百万行。 可能的解决方案 我找到了两种批量删除的方法: 第一种是设置一个TTL,这样所有过期的记录都会被系统自动删除。但是我想保留上个月之前插入的记录,所以这个解决方案对我不起作用。 第二种选择是使用Java API编

  • 我正在帮助我的姐妹们编写一个简单的java程序,我被难倒了。他们只学习了扫描器类来读取文件内容,所以我认为他们应该使用扫描器类。每一行都包含字母和可能的空格,我们希望将每一行存储在一个数组中。在其中一行包含以下内容之前,此操作非常有效: abcde f(f后的空格应作为行的一部分读入)。 但是,似乎忽略了最后一个空格。我想我可以将扫描仪定界符设置为如下: 然后使用,但这似乎仍然不起作用。我在谷歌上

  • 第一篇文章是关于Stack的,对于使用Python和DynamoDB编程来说,这是相当新的,但是我只是想在我的表上运行一个扫描,根据两个预定义的属性返回结果。 ---这是我的Python代码片段--- 我的发电机有4个磁场。 ID 日期 班次 安全 现在关于这个问题,在运行时,我得到了两个返回的表条目,而我应该只得到第一个条目...根据我的扫描标准,有“没有安全问题”的那个。 ---这是我的Dyn

  • 行列+单元格 001_1454578003995 column=hd:abc,时间戳=1454578173766,值=2 001_1454578003996 column=hd:def,timestamp=1454578173766,value=2 002_1454578003997 Column=HD:IJK,时间戳=1454578173766,值=2 你能帮我做这个吗?