2015-06-10 4 views
1

Я пытаюсь создать несколько фильтров для фильтрации данных из Bigtable. Я использую драйверы bigtable-hbase и драйверы HBase. На самом деле здесь мои зависимости от pom.xml:LongComparator не работает в Google Cloud Bigtable с API HBase

<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 или большая таблица?

Я нашел это How do you use a custom comparator with SingleColumnValueFilter on HBase?, но я не могу загрузить свои банки на сервер, чтобы он не применим для моего дела.

ответ