Filter Can';t使用带JavaAPI的扫描仪从Hbase获取整个数据

Filter Can';t使用带JavaAPI的扫描仪从Hbase获取整个数据,filter,hbase,Filter,Hbase,全部: 我用CDH-5.4.10构建了一个hbase集群,一切都很好,除非当我使用带java API的scanner从hbase中获取数据时发生了一些奇怪的事情 FilterList filterList=new FilterList(FilterList.Operator.MUST_PASS_ALL); filterList.addFilter(new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryPrefixComparator(By

全部:

我用CDH-5.4.10构建了一个hbase集群,一切都很好,除非当我使用带java API的scanner从hbase中获取数据时发生了一些奇怪的事情

 FilterList filterList=new FilterList(FilterList.Operator.MUST_PASS_ALL);
 filterList.addFilter(new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryPrefixComparator(Bytes.toBytes("I003-2017.02.22"))));//scan all data whose rowkey starts with 'I003-2017.02.22'
 Scan scanner = new Scan();
 scanner.setFilter(this.filterList);
此扫描仪获取的数据取决于运行环境,不确定是否取决于JRE,例如在我的计算机中获取整个数据,但在我同事的计算机中仅获取少量数据。我们都使用相同的JDK-1.7.067

我的maven配置:

<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>2.2.0</version>
</dependency>
<dependency>
    <groupId>com.sematext.hbasewd</groupId>
    <artifactId>hbasewd</artifactId>
    <version>0.1.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.5.1</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-common</artifactId>
    <version>1.0.0</version>
</dependency>

org.apache.hbase
hbase客户端
1.0.0
org.apache.hadoop
hadoop hdfs
2.2.0
com.sematext.hbasewd
缝合
0.1.0
org.apache.hadoop
hadoop通用
2.5.1
org.apache.hbase
hbase通用
1.0.0
我在谷歌上搜索过这个,但似乎没有人遇到过这种情况。所以我认为我的代码或配置中一定有一些错误,但我无法找出问题所在

任何帮助都将不胜感激


更新日期:2017-02-23

我的同事尝试了不同的JDK版本,发现它与JDK的版本有关。它在JDK-some_版本_x64上运行良好,但在JDK-some_版本_x86上运行失败


所以我认为它与JDK版本(x64、x86)有关。有人知道这个奇怪问题的根本原因吗?

请使用合适的兼容版本,然后再试一次:例如,您在pom文件中使用hadoop hdfs 2.2.0,而CDH 5.4.x实现了hdfs 2.6.0。@AbhishekKumar我尝试了不同版本的hdfs,但问题仍然存在。