开发者社区> 问答> 正文

flink sql upsert模式写入mysql,es等key一定是groupby之后所有字段吗?

flink sql upsert模式写入mysql,es等key一定是groupby之后所有字段吗?

举个例子比如我想要 insert into mysql_sink select      ID,      amount,      ………  from source groupby ID;

这里就是想按照id为key,在数据库里更新这个id对应的amount等其他值。

但这样子不能通过calcite的sqlvalidation,select后面不能有非聚合项,必须在groupby后面加上所有select后面的项。 但这样带来一个问题,这样子key的state无限增长(比如说amount是一个随机的double数),job跑不久就会fail掉。

请问大家有什么办法能只指定部分字段为key来规避掉这个问题,谢谢。

*来自志愿者整理的flink邮件归档

展开
收起
游客nnqbtnagn7h6s 2021-12-06 20:32:04 1683 0
1 条回答
写回答
取消 提交回答
  • 非活动key的状态是可清理的,可参考 https://blog.csdn.net/lp284558195/article/details/104609739 https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/query_configuration.html#:~:text=The%20minimum%20idle%20state%20retention,kept%20before%20it%20is%20removed.

    *来自志愿者整理的flink邮件归档

    2021-12-06 21:52:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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

相关镜像