簡體   English   中英

在HBase中按家庭獲得價值

[英]Get value by family in HBase

行:

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

在Java HBase API中,我們可以逐行掃描表,然后為每一行獲取FamilyMap

在不知道qualifier情況下,是否可以選擇獲得特定family的所有qualifier

如果是,那么在績效方面是否存在區別:按鍵獲取價值或按家庭獲取價值?

您可以像這樣在特定家庭中使用掃描儀。 在特定的色譜柱族上使用掃描儀只會返回該族數據作為結果的一部分。 這意味着作為該族一部分的限定詞和值可作為結果的一部分使用。

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); 

}

至於性能,當您獲取所有行數據時,它會相對較慢,因為將獲取特定行的所有列族的所有數據。 因此,除非您希望您的所有家人都不要整排。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM