Hbase Table.get的行为(List<;get>;get)

Hbase Table.get的行为(List<;get>;get),hbase,Hbase,我会问,当HBase使用Table.get(list-get)对给定的get列表执行批处理get时,它会使用rowkey作为每个get的索引吗?也就是说,这将是一种快速的单一得到 我这样问,因为我考虑了扫描和筛选,使用筛选进行扫描,但没有startKey/endKey将扫描整个表 Scan不使用startRow/endRow确实会扫描整个表,即使使用过滤器也是如此。如果您至少知道startRow,则可以避免扫描表的其余部分,例如通过设置数字行限制(这样它将确切知道从何处开始以及最多处理多少行)。

我会问,当HBase使用
Table.get(list-get)
对给定的get列表执行批处理get时,它会使用rowkey作为每个get的索引吗?也就是说,这将是一种快速的单一得到


我这样问,因为我考虑了扫描和筛选,使用筛选进行扫描,但没有startKey/endKey将扫描整个表

Scan
不使用
startRow
/
endRow
确实会扫描整个表,即使使用过滤器也是如此。如果您至少知道
startRow
,则可以避免扫描表的其余部分,例如通过设置数字行限制(这样它将确切知道从何处开始以及最多处理多少行)。但是如果你不知道startRow的
startRow
,那就糟糕了。重要的是,请记住,您不需要整个
startRow
键。你可以做部分。例如,如果您的行键是guid,如果您将startRow设置为'FF',它将跳过所有内容,并以'FF001…'或其他任何内容开头

一般来说,扫描更适合获取一系列行
Get
似乎更适合于不相关/非连续行的集合

***更新:Oops

默认结果[]获取(列表获取)抛出IOException{
抛出新的NotImplementedException(“添加实现!”);
}
我以前没有使用过它,但从2.0开始它就是这样的


如果您真的需要一次获取非连续行的集合,那么在本例中,我建议您使用
扫描查看
MultiRowRangeFilter
。写出来有点痛苦,但我记得当我尝试使用它时,它工作得很好。

谢谢,对于Get,列表中的每个Get都会像Table一样快。Get(),我只是想确认Get(list)是如何工作的。哈,你让我看了代码。稍后我会自己尝试,但会看到更新的答案)
  default Result[] get(List<Get> gets) throws IOException {
    throw new NotImplementedException("Add an implementation!");
  }