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

Flink如何处理托管状态的序列化?

仉高昂
2023-03-14

Flink以何种格式保存运算符的托管状态(用于检查点或逻辑运算符之间的通信(即沿着作业图的边缘)?

文档内容如下

背景:我正在考虑从JSON切换到使用AVRO来将数据输入到我的源中,并将数据发送到我的接收器中。但是,由Avro创建的自动生成的POJO类相当嘈杂。因此,在作业图(用于Flink操作符之间的通信)中,我正在考虑使用像Avro这样的二进制序列化格式是否有任何性能优势。这可能对性能没有实质性的影响(因为Flink可能也使用了优化的格式),它只需要在类型兼容性方面做更多的工作。但我只是想得到更多关于它的信息。

共有1个答案

冷俊健
2023-03-14

Flink为基本类型、POJO和case类使用了它自己的内置序列化框架,并且它被设计成高效的。Avro在模式演化方面确实有优势,这在考虑Flink的保存点时是相关的。关于该主题,请参阅用户邮件列表中的此消息。

 类似资料:
  • 我在同一份flink jobs中读了两个Kafka主题。 :来自第一个主题的消息被保存到rocksdb,然后它将与Stream2联合。 :来自第二个主题的消息被Stream1保存的状态所丰富,然后它将与Stream1联合。 主题1和主题2是不同的来源,但两个来源的输出基本相同。我必须用topic1的数据来充实topic2的数据。 这里是流动; 这里是问题; 那个流量好吗? 可以访问由保存的相同的状

  • 我正在使用在Flink中执行流计算。我为我的作业定义了一个扩展的类。假设我有一个通过键控的流a,和一个流B,它被广播给所有执行程序,以使用我定义的类处理a中的元素。我知道我可以在这个类的或中注册一个计时器,这样当它超时时,我可以通过调用来删除特定密钥组的关联状态。之后我在想,这个重点群体还存在吗? 例如,在流A中,一个新消息带有,我们生成了这样的密钥组及其关联状态。之后,如果出现另一个带有的消息,

  • 在阅读了Flink的文档并四处搜索后,我无法完全理解Flink的句柄在其窗口中的状态。假设我有一个每小时滚动的窗口,其中包含一个聚合函数,该函数将消息累积到某个java pojo或scala case类中。该窗口的大小将与一小时内进入该窗口的事件数量相关联,还是仅仅与POJO/Case类相关联,因为我将事件累加到该对象中。(例如,如果将10000个味精数成一个整数,大小会接近10000*味精大小还

  • 我可以在文档中看到: Flink目前只为没有迭代的作业提供处理保证。对迭代作业启用检查点会导致异常。为了在迭代程序上强制检查点,用户需要在启用检查点时设置一个特殊的标志:env.enablecheckpointing(interval,force=true)。 如果是一个而不是一个(这意味着它也可以保存状态),会有什么变化吗?

  • 我们正在构建一个具有两个流的应用程序: 大量信息流 我们希望连接这两个流以获得共享状态,以便第一个流可以使用第二个状态进行扩展。 每天左右,拼花文件(第二流的源代码)都会更新,这需要我们清除第二流的状态并重建它(可能需要大约2分钟)。 问题是,我们可以在该进程运行时阻止/延迟来自第一流的消息吗? 谢谢。

  • 问题内容: 我有一个像这样的课程: 我想序列化它们的列表: 当我进行序列化时,动物属性的类型信息将丢失。有没有一种方法可以某种方式安装解析器侦听器,以便在遇到列表中的每个元素时提供正确的类进行反序列化?这就是手动提供描述类类型的字符串的想法。 谢谢 问题答案: Gson项目代码库中的RuntimeTypeAdapter据说可以很好地用于多态序列化和反序列化。我认为我尚未尝试使用它。有关更多信息,请