首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HappyBase和HBase的原子批量插入

HappyBase和HBase的原子批量插入
EN

Stack Overflow用户
提问于 2015-06-01 03:12:16
回答 2查看 2.1K关注 0票数 1

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

代码语言:javascript
复制
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作为参数。这些是否可以配置成在批处理中途失败时回滚成功保存的行?

会不会在这里抛出一个异常,这将允许我注意行键并执行批删除?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-25 13:27:18

您是否按照“幸福基础”文档中的批处理突变教程进行操作?看上去你搞混了几件事。https://happybase.readthedocs.org/en/latest/user.html#performing-batch-mutations

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

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

然而..。那只是幸福之路。如果在with块的某个地方引发了一些Python异常,该怎么办?这就是transaction标志发挥作用的地方:如果是True,则根本不向服务器发送数据,如果是False,任何挂起的数据无论如何都会被刷新。哪种行为是最受欢迎的,这取决于您的用例。

票数 2
EN

Stack Overflow用户

发布于 2015-06-01 06:46:34

我不知道蟒蛇或者快乐基地。据我所知,事务是作为后备策略在库中实现的。由于Hbase除了行内突变之外没有任何事务支持,库只能通过回滚它刚才所做的操作来模拟事务。我认为这个代码中的批处理类可以做到这一点。

代码语言:javascript
复制
    The `transaction` argument specifies whether the returned
    :py:class:`Batch` instance should act in a transaction-like manner when
    used as context manager in a ``with`` block of code. The `transaction`
    flag cannot be used in combination with `batch_size`.
    The `wal` argument determines whether mutations should be
    written to the HBase Write Ahead Log (WAL). This flag can only
    be used with recent HBase versions. If specified, it provides
    a default for all the put and delete operations on this batch.

https://github.com/wbolster/happybase/blob/master/happybase/table.py线460-480

wal也是一种性能参数。如果没有将操作写入WAL,则速度更快。来自hbase医生;

关闭它意味着RegionServer不会将Put写入预写日志,只写到memstore中,但是结果是,如果发生RegionServer故障,就会导致数据丢失。

http://hbase.apache.org/0.94/book/perf.writing.html第11.7.5节

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30565120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档