作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
行:
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/
我是一名优秀的程序员,十分优秀!