gpt4 book ai didi

python - HBase 的 HappyBase 和原子批量插入

转载 作者:行者123 更新时间:2023-11-30 23:10:46 24 4
gpt4 key购买 nike

使用Python中HBase的HappyBase API,可以通过以下方式执行批量插入:

import happybase
connection = happybase.Connection()
table = connection.table('table-name')
batch = table.batch()
# put several rows to this batch via batch.put()
batch.send()

如果该批处理中途失败会发生什么?已保存的行是否仍保留,未保存的行是否不保存?

我在 HappyBase github 中注意到,table.batch() 方法采用 transactionwal 作为参数。是否可以将这些配置为在批处理中途失败时回滚成功保存的行?

happybase会在这里抛出异常,这将允许我记下行键并执行批量删除吗?

最佳答案

您是否遵循了 Happybase 文档中有关批量突变的教程?看起来你在这里混淆了一些东西。 https://happybase.readthedocs.org/en/latest/user.html#performing-batch-mutations

批处理纯粹是一种性能优化:它们避免了存储/删除的每一行往返于 Thrift 服务器,这可能会导致显着的加速。

上下文管理器行为(with block ),正如上面链接的用户指南中的大量示例所解释的那样,是一个纯粹的客户端便利 API,使应用程序代码更易于编写和推理。如果 with block 成功完成,所有突变都会一次性发送到服务器。

但是...这只是幸福的道路。如果 with block 中的某个地方引发了一些 Python 异常,该怎么办?这就是 transaction 标志发挥作用的地方:如果 True,则根本不会向服务器发送任何数据;如果 False,则任何待处理的数据都会被发送到服务器。反正脸红了。首选哪种行为很大程度上取决于您的用例。

关于python - HBase 的 HappyBase 和原子批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30565120/

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