gpt4 book ai didi

java - 在 HBase 中按家庭获取值(value)

转载 作者:可可西里 更新时间:2023-11-01 14:55:15 26 4
gpt4 key购买 nike

行:

Key, Family:Qualifier, Value
Key, Family1:Qualifier, Value
Key, Family2:Qualifier, Value
Key, FamilyN:Qualifier, Value

在 Java HBase API 中,我们可以逐行扫描表,然后为每一行获取一个 FamilyMap

是否可以在不知道 qualifier 的情况下获取特定 family 的所有行?

如果是,在性能方面是否存在差异:通过键获取值(value)或通过家庭获取值(value)?

最佳答案

您可以像这样在特定家庭上获取扫描仪。在特定列族上获取扫描仪仅返回该族数据作为结果的一部分。这意味着属于该系列的限定符和值可用作结果的一部分。

HTable table = new HTable(HBaseConfiguration.create(), "tablename");
Scan scan = new scan();
scan.setCaching(NUMBER_OF_ROWS_TO_CACHE);
//If you want to get data for all families then do not add any family.
scan.addFamily(Bytes.toBytes("columnFamilyName"));
ResultScanner scanner = table.getScanner(scan);

如果您不向上面创建的scan 对象添加任何列族,那么您将获得所有列族的数据。现在你可以像这样迭代来扫描表格了

for (Result result = scanner.next(); (result != null); result = scanner.next()) {
//If you want a family specific data
NavigableMap familyMap = result.getFamilyMap(Bytes.toBytes("familyname"));
//if you want to get the entire row
Get get = new Get(result.getRow());
Result entireRow = table.get(get);

}

至于获取所有行数据时的性能,它会相对较慢,因为获取了特定行的所有列族的所有数据。所以,除非您希望所有家庭都不要整排。

关于java - 在 HBase 中按家庭获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7716162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com