首页技术文章正文

HBase单行数据插入和删除方法

更新时间:2023-03-13 来源:黑马程序员 浏览量:

IT培训班

HBase 没有任何数据类型的概念;所有行键、列名和列值都被简单地视为原始字节字符串。

按照设计,HappyBase 不会进行任何自动字符串转换。这意味着在将数据传递给 HappyBase 之前,必须在应用程序中将数据转换为字节字符串(bytes),例如通过对文本字符串(使用 Unicode)调用 s.encode('utf-8') 或通过采用更高级的字符串序列化struct.pack() 之类的技术。查找 HBase 建模技术以获取更多详细信息。请注意,HappyBase 使用的底层 Thrift 库将文本字符串自动编码为字节,但强烈建议不要依赖此“功能”,因为返回的数据不会自动解码,从而导致不对称并因此造成混乱的行为。在应用程序代码中明确编码和解码步骤是正确的方法。

在 HBase 中,所有突变要么存储数据,要么将数据标记为删除;没有就地更新或删除之类的东西。 HappyBase 提供了进行单次插入或删除的方法,以及一次执行多个突变的批处理 API。

插入数据

要在我们的表中存储单个单元格的数据,我们可以使用 Table.put(),它接受行键和要存储的数据。数据应该是一个字典,将列名映射到一个值:

table = connection.table('user')
table.put(b'rk0003', {b'info:name': b'wangdacui',
                       b'info:age': b'11'})
如果要显式提供时间戳,请使用时间戳参数:
table = connection.table('user')
table.put(b'rk0004', {b'info:name': b'zhangdasan',
                       b'info:age': b'11'}, timestamp=1641839679206)
如果省略,HBase 默认为当前系统时间。

删除数据

Table.delete() 方法从表中删除数据。要删除完整的行,只需指定行键:

table.delete(b'rk0004')

要删除一列或多列而不是整行,还需指定 columns 参数:

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'])

可选的时间戳参数将删除操作限制为指定时间戳之前的数据。

# 小于等于这个时间戳被删除
table.delete(b'rk0004', columns=[b'info:name'], 
timestamp=1641840194232)


分享到:
在线咨询 我要报名
和我们在线交谈!