HBase,如何获取Rowkie列表的列列表?

HBase,如何获取Rowkie列表的列列表?,hbase,Hbase,我有一个行键列表,我想获取每个行键的特定列。 我找到的唯一方法是在循环中使用get命令。 有更好的方法吗 我将描述确切的用例: 我有一个表,每行大约有50列 对于在给定时间范围内至少有一列已更新的每行,我希望获取20列 我实施它的方式: 使用时间范围和列列表扫描表 从响应中获取所有行键(其中包含在时间范围内更新的rawkey和列) 循环,该循环使用列列表为每个行键创建get请求 执行批处理请求 将完整数据(每行20列)转储到文件中 我正在寻找一种更优雅、更高效的方法 感谢HBase将允许您批

我有一个行键列表,我想获取每个行键的特定列。 我找到的唯一方法是在循环中使用get命令。 有更好的方法吗

我将描述确切的用例:

我有一个表,每行大约有50列

对于在给定时间范围内至少有一列已更新的每行,我希望获取20列

我实施它的方式:
  • 使用时间范围和列列表扫描表
  • 从响应中获取所有行键(其中包含在时间范围内更新的rawkey和列)
  • 循环,该循环使用列列表为每个行键创建get请求
  • 执行批处理请求
  • 将完整数据(每行20列)转储到文件中
  • 我正在寻找一种更优雅、更高效的方法


    感谢

    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时的意思,谢谢