开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink维表join的话是用事件时间还是处理时间啊?

Flink维表join的话是用事件时间还是处理时间啊?

展开
收起
真的很搞笑 2023-11-21 08:11:49 59 0
3 条回答
写回答
取消 提交回答
  • 一般是proctime,此回答整理自钉群“【③群】Apache Flink China社区”

    2023-11-21 22:34:08
    赞同 1 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Apache Flink 提供了三种 Join 方式:EventTime Join、ProcessingTime Join 和 BoundedOutOfOrderness Join。
    EventTime Join 是基于事件时间的 Join,它以 event time 来判断两个流是否处于同一时间窗口内。它要求两个流都具有水印,并且处理时间与事件时间之间的滞后程度需要严格小于窗口长度。
    ProcessingTime Join 是基于处理时间的 Join,它以处理时间来判断两个流是否处于同一时间窗口内。它不需要水印,但是可能会产生数据倾斜。
    BoundedOutOfOrderness Join 是介于 EventTime Join 和 ProcessingTime Join 之间的一种 Join 方法,它允许一定程度的事件时间滞后,但是仍然基于 event time。
    因此,在使用维表 Join 时,应根据你的应用场景选择合适的 Join 方法。如果你需要精确地按时间对数据进行 Join,则应使用 EventTime Join;如果你对数据延遲有一定容忍度,则可以使用 BoundedOutOfOrderness Join 或 ProcessingTime Join。

    2023-11-21 14:13:47
    赞同 展开评论 打赏
  • 在Flink中进行维表JOIN时,目前主要支持的是处理时间语义,也就是对当前时刻维表快照的关联。这意味着对于每条流式数据,系统只会关联当时维表的最新版本数据。如果在某个JOIN行为发生后,维表中的数据发生了变化(例如新增、更新或删除),那么已关联的维表数据将不会被同步更新。

    然而,Flink SQL的维表JOIN并不支持事实表rowtime所对应的的维表快照,即事件时间语义。这就意味着在处理可能不断变化的维表时,需要特别小心。如果你的业务逻辑需要基于事件时间来进行JOIN操作,你可能需要采用其他方法或者调整业务逻辑以满足实际需求。

    2023-11-21 09:16:56
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 热门讨论

    热门文章

    相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载