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

Flink:使用CSV文件的事件时间聚合

万俟承望
2023-03-14

我将Flink 1.11.3与SQL API和Blink planner结合使用。我在流模式下工作,使用带有文件系统连接器和CSV格式的CSV文件。对于一个时间列,我生成水印,并希望根据这个时间进行窗口聚合。就像根据事件时间快进过去一样。

val settings = EnvironmentSettings.newInstance().inStreamingMode().useBlinkPlanner().build()

是否必须为此对时间列进行排序,因为逐行使用时间列,如果不进行排序,可能会发生延迟事件,从而导致行的删除?

我对Ververica的CDC连接器也很感兴趣。也许我能找到一个知道这件事的人。开始时,它对表进行快照,然后将这些行作为更改事件发出。关于事件时间的正确处理是什么?它们的发射顺序是什么?

共有1个答案

吴正祥
2023-03-14

是的,在流模式下运行时,您可能会遇到延迟事件的风险,在执行事件时间窗口时,SQL API会删除延迟事件。

既然输入是一个文件,为什么不在批处理模式下运行作业,并完全避免这个问题?否则,您的选项包括对输入进行排序(按时间),或确保配置水印以避免延迟事件。

至于CDC连接器产生的事件的顺序,我不知道。

 类似资料:
  • 请检查上面的代码,并告诉我是否做得正确。在事件时间和水印分配之后,我想在process函数中处理流,其中我将为不同的密钥收集10分钟的流数据。

  • 查看Flink的留档和书籍,我对时间戳有疑问:如果流设置为事件时间模式,这意味着时间戳在进入Flink之前具有源的时间(甚至在通过消息传递队列之前,可能是Kafka),为什么Flink将时间戳作为元数据附加到记录中?幻灯片3根据它们所占的内容具有不同类型的时间戳:https://www.slideshare.net/dataArtisans/apache-flink-training-time-a

  • 当我们进行基于事件时间的聚合时,有一个实时的数据流--某个键的事件的水印会触发其他键的窗口操作吗? id为2的事件是否会触发id为1的12:00-12:10的时间窗口?或者只有在12:20下一个id为1的事件到达时才会发生?

  • 总之,我希望flatMap1()和flatMap2()按照我在事件中设置的时间戳的顺序被调用。但那不是真的。

  • 我有一个需要使用CSVREAD导入的csv文件。问题是它以不同的方式具有日期时间格式,因此需要解析it.Can有人给我一个我应该如何做的例子吗? 我尝试:合并到消息(MESG_DATE_FROMMESG_DATE_TOMESG_DISPLAY_SEQMESG_TIME_DELAYMESG_IDREASONTYPE_MAJOR)选择*from CSVREAD('MESSAGE_0.csv'); 这些

  • 我想知道是否可以创建类似于以下内容的WindowAssigner: 但我不希望窗口在每个元素的事件时间中保持增长。我希望在接收到的第一个元素(对于该键)处定义窗口的开头,并在1秒后精确结束,无论有多少元素到达该秒。 所以它可能看起来像这样的假设: 谢谢