2015-06-10 21 views
1

我试图构建一些过滤器来过滤Bigtable中的数据。我正在使用bigtable-hbase驱动程序和HBase驱动程序。其实这里是我的依赖从pom.xmlLongComparator在Google Cloud Bigtable中无法使用HBase API

这样
<dependency> 
     <groupId>org.apache.hbase</groupId> 
     <artifactId>hbase-common</artifactId> 
     <version>${hbase.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hbase</groupId> 
     <artifactId>hbase-protocol</artifactId> 
     <version>${hbase.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hbase</groupId> 
     <artifactId>hbase-client</artifactId> 
     <version>${hbase.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hbase</groupId> 
     <artifactId>hbase-server</artifactId> 
     <version>${hbase.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.cloud.bigtable</groupId> 
     <artifactId>bigtable-hbase</artifactId> 
     <version>${bigtable.version}</version> 
    </dependency> 

我过滤数据:

Filter filterName = new SingleColumnValueFilter(Bytes.toBytes("FName"), Bytes.toBytes("FName"), 
       CompareFilter.CompareOp.EQUAL, new RegexStringComparator("JOHN")); 
FilterList filters = new FilterList(); 

filters.addFilter(filterName); 

Scan scan1 = new Scan(); 
scan1.setFilter(filters); 

该工程确定。但后来我添加以下到以前的代码:

Filter filterSalary = new SingleColumnValueFilter(Bytes.toBytes("Salary"), Bytes.toBytes("Salary"), 
       CompareFilter.CompareOp.GREATER_OR_EQUAL, new LongComparator(100000)); 
filters.addFilter(filterSalary); 

,它给我这个例外:

Exception in thread "main" com.google.cloud.bigtable.hbase.adapters.filters.UnsupportedFilterException: Unsupported filters encountered: FilterSupportStatus{isSupported=false, reason='ValueFilter must have either a BinaryComparator with any compareOp or a RegexStringComparator with an EQUAL compareOp. Found (LongComparator, GREATER_OR_EQUAL)'} 
at com.google.cloud.bigtable.hbase.adapters.filters.FilterAdapter.throwIfUnsupportedFilter(FilterAdapter.java:144) 
at com.google.cloud.bigtable.hbase.adapters.ScanAdapter.throwIfUnsupportedScan(ScanAdapter.java:55) 
at com.google.cloud.bigtable.hbase.adapters.ScanAdapter.adapt(ScanAdapter.java:91) 
at com.google.cloud.bigtable.hbase.adapters.ScanAdapter.adapt(ScanAdapter.java:43) 
at com.google.cloud.bigtable.hbase.BigtableTable.getScanner(BigtableTable.java:247) 

所以我的问题是如何筛选的长数据类型?是hbase问题还是bigtable具体?

我发现这个How do you use a custom comparator with SingleColumnValueFilter on HBase?但我无法加载我的罐子到服务器,所以它不适用于我的情况。

回答

相关问题