Bigtable Scan.setReversed() не работает в версии 1.2.1?

Я использую JAVA API для сканирования Bigtable по частичному ключу строки, как назад, так и вперед. Этот код работает хорошо, но ТОЛЬКО вперед:

    Scan s = new Scan();
    s.setReversed(true);    
    s.setStartRow(rowKey);          
    s.setStopRow(rowKeyEnd); 
    ResultScanner scanner = tbl.getScanner(s);
    for (Result row : scanner)
    {   
        String rk = new String(row.getRow());
        System.out.println("Row: " + rk);
    }

Кажется, что строка .setReversed(true); сама по себе не оказывает никакого влияния, независимо от того, установил ли я ее до или после установки клавиш начала и конца строки. Если я переключаю ключи начала и конца строки в .setStartRow() и .setStopRow(), то получаю исключение в коде итерации (Result row : scanner):
Вызвано: com.google.bigtable.repackaged.io.grpc.StatusRuntimeException: INVALID_ARGUMENT: Error в поле row_ranges: ошибка в элементе №0: start_key должен быть меньше end_key

Как я понимаю из этого обсуждения -stopkey">при обратном сканировании в HBase, где startKey, а где stopKey?, обратное сканирование не работает в версиях ниже 0.98, но я вижу свою серверную версию как 1.2.1 в облачной консоли Google:

hbase(main):023:0> версия 1.2.1, r8d8a7107dc4ccbf36a92f64675dc60392f85c015, среда, 30 марта 11:29:35 CDT 2016

Кроме того, мой JAR на стороне клиента — bigtable-hbase-1.2-0.9.4.jar.

В качестве теста мои ключи строк отформатированы следующим образом:
Джон*1*XXX
Джон*2*XXX
Джон*3*XXX

Есть ли лучший способ чтобы сделать это, пожалуйста?


person VS_FF    schedule 20.12.2016    source источник


Ответы (1)


К сожалению, Bigtable не поддерживает обратное сканирование. HBase API в основном совпадает с Cloud Bigtable, но не во всем. Вы нашли одну из недостающих функций в Bigtable.

person Solomon Duskis    schedule 20.12.2016
comment
Спасибо полезный пост. Из сообщения я понял, что сопроцессоры также не поддерживаются. У меня был связанный с этим вопрос о том, как получить количество строк возвращенного сканирования, которое, по-видимому, связано с API-интерфейсом сопроцессора здесь: [stackoverflow.com/questions/41183912/. Полагаю, я тоже не могу полагаться на это? - person VS_FF; 21.12.2016