Scan
без startRow
/ endRow
действительно отсканирует всю таблицу, даже с фильтрами.Если вы знаете хотя бы startRow
, тогда вы можете избежать сканирования остальной таблицы, например, установив числовой предел строки (чтобы он точно знал, с чего начать и сколько строк обрабатывать макс.).Но если вы не знаете startRow
, то это плохо.Важно помнить, что вам не нужен ВЕСЬ startRow
ключ.Вы можете сделать частичное.Например, если ваши ключи строк имеют идентификаторы GUID, если вы установите startRow как «FF», он будет пропускать все до него и начинаться с «FF001 ...» или чего-либо другого.
Обычно сканирование лучше для полученияпоследовательность строк.Get<list>
кажется больше для коллекции несвязанных / непоследовательных строк.
*** ОБНОВЛЕНИЕ: Упс ...
https://github.com/apache/hbase/blob/branch-2.0/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Table.java
default Result[] get(List<Get> gets) throws IOException {
throw new NotImplementedException("Add an implementation!");
}
У меня есть убежищене использовал его раньше, но вот как это выглядит в 2.0.
Если вам действительно нужно получить коллекцию непоследовательных строк сразу, в этом случае я бы посоветовал взглянуть на MultiRowRangeFilter
с Scan
.Это немного болезненно писать, но я помню, что это работало хорошо, когда я пытался его использовать.