【问题标题】:querying hbase in java if value of some fields are known如果某些字段的值已知,则在 java 中查询 hbase
【发布时间】:2015-10-28 21:21:19
【问题描述】:

我正在使用 org.apache.hadoop.hbase 库来查询 hbase。 在 h-base 中,我有以下内容:

表名:员工 在此表中,我有以下字段: emp_id、姓名、年龄、职务、入职日期

如果我只有他的加入日期和姓名,我如何找到员工的指定。 我正在使用类似的东西:

public static void getOneRecord (Configuration conf, String tableName, String rowKey, String rowKey2) throws IOException{
        HTable table = new HTable(conf, tableName);
        Get get = new Get(rowKey.getBytes());
        Result rs = table.get(get);
        for(KeyValue kv : rs.raw()){
            System.out.print(new String(kv.getRow()) + " " );
            System.out.print(new String(kv.getFamily()) + ":" );
            System.out.print(new String(kv.getQualifier()) + " " );
            System.out.print(kv.getTimestamp() + " " );
            System.out.println(new String(kv.getValue()));
        }
    }

如何将其扩展到 2 个行键。

注意:保证这一对查询只会返回一个值。

【问题讨论】:

    标签: java mysql apache hadoop hbase


    【解决方案1】:

    您想根据不是行键的列获取记录。请确认。如果是,以下是选项

    1. 良好的行键设计以提高性能。如果您要根据行键以外的列进行更多查询,则可以考虑修改行键设计以将该列附加为行键的一部分。然后您可以使用 get 或 scan 与行键范围、行过滤器或 FuzzyRowFilter
    2. 二级索引是一种选择。
    3. 使用过滤器(在您的情况下是两个 SingleColumnValueFilter)并将它们添加为扫描的一部分。here

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2013-01-14
      • 1970-01-01
      • 2017-07-04
      • 2021-11-12
      • 1970-01-01
      相关资源
      最近更新 更多