首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PARTITION BY with TUMBLE导致FlinkSQL中的异常

PARTITION BY with TUMBLE导致FlinkSQL中的异常
EN

Stack Overflow用户
提问于 2020-05-30 00:32:56
回答 1查看 287关注 0票数 0

我想使用FlinkSQL选择处理窗口的最后一个元素。我尝试在Blink planner中使用ROW_NUMBER来实现这一点。已尝试以下查询:

代码语言:javascript
复制
SELECT * FROM (
  SELECT key, value, ROW_NUMBER() OVER w AS rn
    FROM InputTable
  WINDOW w AS (PARTITION BY key, TUMBLE(rt, INTERVAL '15' MINUTE) ORDER BY -ts)
) WHERE rn = 1

// rt = ts.rowtime, ts is Long

不幸的是,这会导致异常

代码语言:javascript
复制
org.apache.flink.table.planner.codegen.CodeGenException: Unsupported call: TUMBLE(TIMESTAMP(3) *ROWTIME*, INTERVAL SECOND(3) NOT NULL) 
If you think this function should be supported, you can create an issue and start a discussion for it.

你知道我做错了什么吗?我认为TUMBLE函数与计算rowtime % interval是“等价的”。

EN

回答 1

Stack Overflow用户

发布于 2020-06-03 15:44:28

TUMBLE (以及HOPSESSION)是Flink SQL (版本2.11)中的特殊内置函数,只能在GROUP BY子句中使用。原则上您是对的,在这个上下文中使用TUMBLE应该是可以的,但在这一点上根本不支持它。

您可以实现一个用户定义的函数来重新实现TUMBLE的分组逻辑,但是,我不建议这样做,因为查询将不能很好地执行。Flink SQL不会意识到一个分区(PARTITION BY key, TUMBLE(rt, INTERVAL '15' MINUTE)只会在35分钟内处于“活动”状态,并且永远保持其状态。因此,随着时间的推移,查询会积累越来越多的状态,这会减慢检查点和恢复的速度。在未来,这种基于时间的OVER分区应该会被支持,但AFAIK还不支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62090613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档