Сканировать аккумулятор с помощью rowid

Как использовать Java API для сканирования аккумулятора, используя только rowid. Например, когда я просматриваю таблицу с помощью оболочки Acculo, в Acculo появляется следующая запись:

12lj314t1u43td1 Documents:Entity [U] {values}

Я знаю идентификатор строки в Java, который равен «12lj314t1u43td1». Я хочу получить {values} для всех возможных семейств столбцов и квалификаторов. Я уже проверял документацию по аккумулятором на сканере, но там не сказано, как установить диапазоны для возврата только на основе rowid.


person user2737670    schedule 20.03.2014    source источник


Ответы (2)


Если вас интересует только один rowID, вы можете использовать Scanner для этого:

Scanner scanner = connector.createScanner(myTable, new Authorizations("U"));
scanner.setRange(new Range("12lj314t1u43td1"));

for(Entry<Key,Value> entry : scanner){
    System.out.println(entry);
}

Это даст вам каждую строку «12lj314t1u43td1». Если вам нужны только строки с Documents cf, вы должны добавить это после строки setRange

scanner.fetchColumnFamily(new Text("Documents"));

или если вам нужны только документы с Entity CQ, вы бы сделали

scanner.fetchColumn(new Text("Documents"), new Text("Entity"));

Если вы ищете много несмежных строк, вы можете попробовать BatchScanner. Также можно использовать множество итераторов и регулярных выражений, но это должно дать вам то, что вы хотите.

person FuriousGeorge    schedule 20.03.2014

Вы можете сканировать диапазон в оболочке с помощью scan -b startRow -e endRow. См. scan --help для дополнительных опций.

Примечание: вы должны использовать Java API, если вам нужна производительность, но это дает вам диапазон для оболочки.

person Christopher    schedule 21.03.2014