开发者社区> 问答> 正文

Flink sql join问题

Hi all, 请问用Flink sql做双流join。如果希望两个流都只保存每个key的最新的数据,这样相当于每次join都只输出最新的一条记录。请问这种场景sql支持吗*来自志愿者整理的flink邮件归档

展开
收起
小阿怪 2021-12-07 22:20:17 719 0
1 条回答
写回答
取消 提交回答
  • 可以试下最新flink 1.9 blink planner的firstRow/lastRow优化[1]能否满足你的需求,目前的限制是只能基于procTime来去重。

    • e.g.
      1. {{{
    • SELECT a, b, c FROM (
    • SELECT a, b, c, proctime,
    • ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime ASC) as row_num
    • FROM MyTable
    • ) WHERE row_num <= 1
    • }}} will be converted to StreamExecDeduplicate which keeps first row.
      1. {{{
    • SELECT a, b, c FROM (
    • SELECT a, b, c, proctime,
    • ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime DESC) as row_num
    • FROM MyTable
    • ) WHERE row_num <= 1
    • }}} will be converted to StreamExecDeduplicate which keeps last row.

    [1] https://github.com/apache/flink/blob/master/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/plan/rules/physical/stream/StreamExecDeduplicateRule.scala*来自志愿者整理的flink邮件归档

    2021-12-08 10:38:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载