Java HBase FuzzyRowFilter不返回任何结果

Java HBase FuzzyRowFilter不返回任何结果,java,macos,scala,hbase,Java,Macos,Scala,Hbase,我很难让HBase的FuzzyRowFilter正常工作 我有以下测试表: hbase(main):014:0> scan 'test' ROW COLUMN+CELL row-01 column=colfam1:col1, timestamp=1481193793338, value=value1 row-02

我很难让HBase的
FuzzyRowFilter
正常工作

我有以下测试表:

hbase(main):014:0> scan 'test'
ROW                                  COLUMN+CELL
 row-01                              column=colfam1:col1, timestamp=1481193793338, value=value1
 row-02                              column=colfam1:col1, timestamp=1481193799186, value=value2
 row-03                              column=colfam1:col1, timestamp=1481193803941, value=value3
 row-04                              column=colfam1:col1, timestamp=1481193808209, value=value4
 row-05                              column=colfam1:col1, timestamp=1481193812737, value=value5
5 row(s) in 0.0200 seconds
这是我的Java代码(我从Scala开始,但结果是一样的-无):

我做错什么了吗?HBase(版本1.2.2)中是否存在错误?我正在使用最新Mac OS Sierra上通过自制安装的版本

更新 在运行带有HBase 1.2.0-cdh5.7.0的CDH 5.7的Cloudera Hadoop集群上,我获得了rowkey
row-01
所需的输出。该错误一定与我的本地设置有关

解决方案 事实上,问题在于HBase服务器安装和客户端JAR版本不匹配。在我的例子中,我使用的是人工制品

  • hbase通用
  • hbase客户端
  • hbase服务器
版本为
1.2.0-cdh5.7.0
而不是
1.2.2


我的错误是假设较小的版本差异不会产生很大的影响,但显然Cloudera在其版本中对官方代码库应用了一些重大更改。更改为官方版本
1.2.2
使
FuzzyRowFilter
按预期工作。

它应该只打印第01行的行键,这可以从过滤条件中看出。 没有这样的错误,它会像预期的那样工作,因为我已经使用了一段时间了。 检查您的配置、依赖项等。 由于版本控制,很多时候库和它们的客户机是不兼容的。 让我们举一个简单的例子:

class ServerVersionA {
public static void getData() {
    return DataOject(data with headerVersionA);
}
}

}

在这种情况下,如果报头不匹配,客户机就会处于空闲状态。 这类问题大部分都得到了解决,但有时它们会悄悄出现。
如果我们查看安装源和客户端版本,我们可以找到为什么不返回数据,也不传播异常。

很高兴听到您使用了过滤器。但是您不同意HBase服务器的行为很奇怪吗?如果依赖项或配置不匹配,服务器不应该报告错误而不是返回空结果吗?无论如何,我会很高兴得到解决我问题的具体提示。在大多数情况下都是这样,但在版本不匹配(jar和安装)的情况下,它不会执行任何操作,甚至不会发出警告。例如,您可以参考[link]()看看问题和解决方案。如果仍然出现错误,可以向我发送有关hbase下载链接和pom或类路径变量的信息。没错,问题是使用Cloudera repo的hbase JAR。使用官方JAR和匹配版本解决了我的问题。如果jar版本不匹配,您能否在回答中包含您对NoOps的评论?那么我会接受它作为正确答案。投票人是否愿意解释他为什么投票否决我的问题?我相信它清楚地说明了问题以及我以前解决问题的尝试。
keyvalues={row-01/colfam1:col1/1481193793338/Put/vlen=6/seqid=0}
keyvalues={row-02/colfam1:col1/1481193799186/Put/vlen=6/seqid=0}
keyvalues={row-03/colfam1:col1/1481193803941/Put/vlen=6/seqid=0}
keyvalues={row-04/colfam1:col1/1481193808209/Put/vlen=6/seqid=0}
class ServerVersionA {
public static void getData() {
    return DataOject(data with headerVersionA);
}
class ClientVersionB {
public void showData() {
    DataObject dataObject = makeRequest(params);
    //Check whether data recieved is of version B after veryfying header                                         boolean status=validate(dataObject);
    if (status) {
        doIO(dataObject);
    }
}