首頁技術(shù)文章正文

HBase單行數(shù)據(jù)插入和刪除方法

更新時間:2023-03-13 來源:黑馬程序員 瀏覽量:

IT培訓班

HBase 沒有任何數(shù)據(jù)類型的概念;所有行鍵、列名和列值都被簡單地視為原始字節(jié)字符串。

按照設(shè)計,HappyBase 不會進行任何自動字符串轉(zhuǎn)換。這意味著在將數(shù)據(jù)傳遞給 HappyBase 之前,必須在應(yīng)用程序中將數(shù)據(jù)轉(zhuǎn)換為字節(jié)字符串(bytes),例如通過對文本字符串(使用 Unicode)調(diào)用 s.encode('utf-8') 或通過采用更高級的字符串序列化struct.pack() 之類的技術(shù)。查找 HBase 建模技術(shù)以獲取更多詳細信息。請注意,HappyBase 使用的底層 Thrift 庫將文本字符串自動編碼為字節(jié),但強烈建議不要依賴此“功能”,因為返回的數(shù)據(jù)不會自動解碼,從而導致不對稱并因此造成混亂的行為。在應(yīng)用程序代碼中明確編碼和解碼步驟是正確的方法。

在 HBase 中,所有突變要么存儲數(shù)據(jù),要么將數(shù)據(jù)標記為刪除;沒有就地更新或刪除之類的東西。 HappyBase 提供了進行單次插入或刪除的方法,以及一次執(zhí)行多個突變的批處理 API。

插入數(shù)據(jù)

要在我們的表中存儲單個單元格的數(shù)據(jù),我們可以使用 Table.put(),它接受行鍵和要存儲的數(shù)據(jù)。數(shù)據(jù)應(yīng)該是一個字典,將列名映射到一個值:

table = connection.table('user')
table.put(b'rk0003', {b'info:name': b'wangdacui',
                       b'info:age': b'11'})
如果要顯式提供時間戳,請使用時間戳參數(shù):
table = connection.table('user')
table.put(b'rk0004', {b'info:name': b'zhangdasan',
                       b'info:age': b'11'}, timestamp=1641839679206)
如果省略,HBase 默認為當前系統(tǒng)時間。

刪除數(shù)據(jù)

Table.delete() 方法從表中刪除數(shù)據(jù)。要刪除完整的行,只需指定行鍵:

table.delete(b'rk0004')

要刪除一列或多列而不是整行,還需指定 columns 參數(shù):

table = connection.table('user')
table.put(b'rk0004', {b'info:name': b'zhangdasan',
                       b'info:age': b'11', b'info:pic': b'pic'}, timestamp=1641839679206)
table.delete(b'rk0004', columns=[b'info:age', b'info:pic'])

可選的時間戳參數(shù)將刪除操作限制為指定時間戳之前的數(shù)據(jù)。

# 小于等于這個時間戳被刪除
table.delete(b'rk0004', columns=[b'info:name'], 
timestamp=1641840194232)


分享到:
在線咨詢 我要報名
和我們在線交談!