我正在使用org.apache.hadoop.hbase库来查询hbase。在h-base中,我有以下几点:
表名:此表中的雇员有以下字段:雇员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行键。
注意:保证这个pair查询只返回一个值。
1条答案
按热度按时间eivgtgni1#
您希望基于不是行键的列获取记录。请确认一下。如果是,以下是选项
性能良好的行键设计。如果您更多地是基于列而不是行键进行查询,那么可以考虑修改行键设计,将该列作为行键的一部分进行追加。然后可以使用get或scan with row key range、row filter或fuzzyrowfilter
二级索引是一种选择。
使用过滤器(在您的例子中是两个singlecolumnvaluefilter)并将它们添加为scan.here的一部分