当前位置: 首页 > 知识库问答 >
问题:

Apache Beam:分布式KV表中的维护状态

傅和璧
2023-03-14

我试图更好地理解梁计算模型,并检查我的问题是否可以在该模型内解决。

假设我有一系列事件,

class Event {
    public int userId;
    public int score;
}

我想建立管道:

  • 读取事件流

我读过关于有状态处理的内容,据我所知,在StatefulParDo中维护用户的最大分数很容易。但这种状态是如何存储的是Beam实现的细节,而这种状态在StatefulParDo函数之外是不可用的。

是否有可能在某种可供外部消费者(我的管道之外的读取器)使用的KV存储中以定义良好的格式保持这种状态?

共有1个答案

焦博实
2023-03-14

因此,您必须选择Beam State API或外部存储系统。

光束状态的确切存储位置由转轮决定。您不能在state API之外直接访问此类状态。

如果您决定使用外部存储路径,则可以从Beam ParDo写入这样的存储系统。但您必须处理读/写时的性能以及此类数据的一致性。此外,您还必须假设任何Beam步骤都可能失败,并且可能会由运行程序重新运行(因此应防止重复写入)。

 类似资料:
  • 除了如何有效地参与一个项目的贡献之外,你可能也需要了解如何维护项目。 这包含接受并应用别人使用 format-patch 生成并通过电子邮件发送过来的补丁,或对项目添加的远程版本库分支中的更改进行整合。 但无论是管理版本库,还是帮忙验证、审核收到的补丁,都需要同其他贡献者约定某种长期可持续的工作方式。 在特性分支中工作 如果你想向项目中整合一些新东西,最好将这些尝试局限在特性分支——一种通常用来尝

  • 我对cosmos DB相当陌生,并试图了解azure cosmos DB SDK为修补文档提供的Java的增量操作。我需要在容器中的一个Documents中维护一个增量计数器。文档看起来像这样- 现在,在我的应用程序中,每当一个动作发生时,我想将这个计数器的值增加1。为此,我使用了宇宙空间运算。我在这里添加了一个增量,就像这样< code > cosmos patch . increment("/

  • 分支维护 你一定注意到了Subversion极度的灵活性,因为它用相同的底层机制(目录拷贝)实现了分支和标签,因为分支和标签是作为普通的文件系统出现,会让人们感到害怕,因为它太灵活了,在这个小节里,我们会提供安排和管理数据的一些建议。 版本库布局 有一些标准的,推荐的组织版本库的方式,许多人创建一个trunk目录来保存开发的“主线”,一个branches目录存放分支拷贝,一个tags目录保存标签拷

  • 本文向大家介绍Mysql分区表的管理与维护,包括了Mysql分区表的管理与维护的使用技巧和注意事项,需要的朋友参考一下 改变一个表的分区方案只需使用alter table 加 partition_options 子句就可以了。和创建分区表时的create table语句很像。 创建表 创建插入数据存储过程 以上所述是小编给大家介绍的Mysql分区表的管理与维护,希望对大家有所帮助,如果大家有任何疑

  • 大多数成熟的项目都平行的维护多个发布线。例如,1.0.0发布后,该发布线会继续微小发布1.0.1,1.0.2等等,直到项目明确的决定终止这条线。请注意,仅仅因为发布了1.1.0不足以终止1.0.x线。例如,一些用户会制定某类政策,永远不升级到较新的次要或主要版本的第一个发布—他们希望其他人能将bug试验出来,例如1.1.0,那么就等待1.1.1。这不一定是自私(请牢记,他们也放弃了bug修正和新特

  • 我的问题是每次调用distinctByKey并产生新的ConcurrentHashMap。如何使用新的ConcurrentHashMap<>()维护状态;?