HBase,如何获取Rowkie列表的列列表?
我有一个行键列表,我想获取每个行键的特定列。 我找到的唯一方法是在循环中使用get命令。 有更好的方法吗 我将描述确切的用例: 我有一个表,每行大约有50列 对于在给定时间范围内至少有一列已更新的每行,我希望获取20列 我实施它的方式:HBase,如何获取Rowkie列表的列列表?,hbase,Hbase,我有一个行键列表,我想获取每个行键的特定列。 我找到的唯一方法是在循环中使用get命令。 有更好的方法吗 我将描述确切的用例: 我有一个表,每行大约有50列 对于在给定时间范围内至少有一列已更新的每行,我希望获取20列 我实施它的方式: 使用时间范围和列列表扫描表 从响应中获取所有行键(其中包含在时间范围内更新的rawkey和列) 循环,该循环使用列列表为每个行键创建get请求 执行批处理请求 将完整数据(每行20列)转储到文件中 我正在寻找一种更优雅、更高效的方法 感谢HBase将允许您批
感谢HBase将允许您批处理Get操作,因此只需一个网络请求即可获得多行的结果 请注意,这需要一个对象列表,因此只需构建get列表,然后一次性调用HTable.get:
List<Get> gets = new ArrayList<Get>();
for (/* all rowkeys */) {
Get g = new Get(row);
g.addColumn(col1);
g.addColumn(col2);
// ...
gets.add(g);
}
Result[] r = htable.get(gets);
List get=new ArrayList();
对于(/*所有行键*/){
Get g=新Get(行);
g、 addColumn(col1);
g、 addColumn(col2);
// ...
get.add(g);
}
结果[]r=htable.get(gets);
我觉得你需要像这样的东西。DependentColumnFilter允许我们指定一个引用列,用于控制如何筛选其他列。它使用引用列的时间戳,并包括具有相同时间戳的所有其他列
构造函数:
DependentColumnFilter(byte[] family, byte[] qualifier)
DependentColumnFilter(byte[] family, byte[] qualifier, boolean dropDependentColumn)
DependentColumnFilter(byte[] family, byte[] qualifier, boolean dropDependentColumn, CompareOp valueCompareOp, WritableByteArrayComparable valueComparator)
此外,可以根据这些值选择其他列
不过有一个陷阱。此筛选器与扫描操作的批处理功能不兼容
HTH什么是搜索条件?我已经添加了更准确的问题描述。这就是我在编写使用get in a loop时的意思,谢谢