首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Apache Storm Trident中确定事务是否已成功提交

如何在Apache Storm Trident中确定事务是否已成功提交
EN

Stack Overflow用户
提问于 2015-03-18 20:59:33
回答 1查看 265关注 0票数 1

我正在尝试开始使用Storm Trident,并在OpaqueMap的支持下设置和运行IOpaquePartitionedTridentSpout的拓扑结构。

然而,我很难找到让我的spout/函数知道事务是否成功提交的方法。我没有看到任何像在Storm spout/bolt接口中那样的确认或失败方法。

我的用例是,只有在处理和持久化(或失败)相同类别的前一个类别时,才发出该类别的元组。因为我将使用处理后的数据来更新类别的下一个元组。来自不同类别的元组可以并行处理。

使用partitionBy方法对流进行分类划分。

max_spout_pending设置为1可消除该问题,因为三叉树一次仅提交一批。但这是不可伸缩的。如果设置为大于1的任何值,则同一类别的元组在两个连续批处理中发出时,将在前一个事务提交之前处理。

或者我应该为每个类别设置一个spout,并将max_spout_pending设置为1?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-04-19 05:23:18

我建议你考虑实现一个ITridentSpout。它在协调器中有一个success()方法,当成功处理批处理时将调用该方法。来自协调器的相同元数据被发送到所有发射器,因此它们需要划分工作。

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

https://stackoverflow.com/questions/29122770

复制
相关文章

相似问题

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