You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by xu yihan <my...@126.com> on 2020/06/04 01:11:20 UTC

flink sql ddl能设置ttl吗?

各位好,

我有一个需求是要维表关联mysql数据,再upsert写入mysql,就是个丰富字段的简单需求。
 
现在有两个问题:
1.为了实现upsert插入,我试下来必须使用groupby指定key,但是select内又有很多非聚合项,所以没办法在groupby后面加上所有那些非聚合项,否则通不过calcite validation。

2.现在遇到了一个问题,跑一段时间会抱full GC,我估计是因为groupby导致的状态不清理。
请问flink sql ddl能通过类似SET 语句来设定ttl吗,搜了官方文档只有提到table api里有setIdelStateRententionTime。

感谢各位的指教。

发自我的iPhone

Re: flink sql ddl能设置ttl吗?

Posted by Benchao Li <li...@gmail.com>.
Hi,

1. 如果我没记错的话,mysql的写入应该就是replace的方式写入的,应该不需要group by来实现upsert写入吧,除非你想要的是聚合结果。
2. 这个看你用的是哪种方式,如果是table api,可以直接用你说的这种方式来设置;如果用的是sql-client,可以直接在配置文件里面配置。

xu yihan <my...@126.com> 于2020年6月4日周四 下午6:07写道:

> 各位好,
>
> 我有一个需求是要维表关联mysql数据,再upsert写入mysql,就是个丰富字段的简单需求。
>
> 现在有两个问题:
> 1.为了实现upsert插入,我试下来必须使用groupby指定key,但是select内又有很多非聚合项,所以没办法在groupby后面加上所有那些非聚合项,否则通不过calcite
> validation。
>
> 2.现在遇到了一个问题,跑一段时间会抱full GC,我估计是因为groupby导致的状态不清理。
> 请问flink sql ddl能通过类似SET 语句来设定ttl吗,搜了官方文档只有提到table
> api里有setIdelStateRententionTime。
>
> 感谢各位的指教。
>
> 发自我的iPhone



-- 

Best,
Benchao Li

Re: flink sql ddl能设置ttl吗?

Posted by Leonard Xu <xb...@gmail.com>.
更新下,第二个问题,Flink sql-client中支持SET配置 TTL(ms)的:

Flink SQL> set execution.min-idle-state-retention = 20000;
[INFO] Session property has been set.

祝好,
Leonard Xu

> 在 2020年6月5日,13:39,Leonard Xu <xb...@gmail.com> 写道:
> 
> Hi,
> 
> 第一个问题,即将发布的1.11可以设定primary key, 不用再推断primary key,除pk外的字段也没有限制,当前你可以加firt_value,last_value等函数取非group by的其他字段, jdbc的文档在撰写中了[1]
> 第二个问题,目前应该还不支持通过SET在DDL里设置ttl的.
> 
> Best,
> Leonard Xu
> [1] https://issues.apache.org/jira/browse/FLINK-17829 <https://issues.apache.org/jira/browse/FLINK-17829>
> [2] https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/query_configuration.html <https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/query_configuration.html>
> 
> 
> 
>> 在 2020年6月4日,09:11,xu yihan <mytardis@126.com <ma...@126.com>> 写道:
>> 
>> 各位好,
>> 
>> 我有一个需求是要维表关联mysql数据,再upsert写入mysql,就是个丰富字段的简单需求。
>> 
>> 现在有两个问题:
>> 1.为了实现upsert插入,我试下来必须使用groupby指定key,但是select内又有很多非聚合项,所以没办法在groupby后面加上所有那些非聚合项,否则通不过calcite validation。
>> 
>> 2.现在遇到了一个问题,跑一段时间会抱full GC,我估计是因为groupby导致的状态不清理。
>> 请问flink sql ddl能通过类似SET 语句来设定ttl吗,搜了官方文档只有提到table api里有setIdelStateRententionTime。
>> 
>> 感谢各位的指教。
>> 
> 


Re: flink sql ddl能设置ttl吗?

Posted by Leonard Xu <xb...@gmail.com>.
Hi,

第一个问题,即将发布的1.11可以设定primary key, 不用再推断primary key,除pk外的字段也没有限制,当前你可以加firt_value,last_value等函数取非group by的其他字段, jdbc的文档在撰写中了[1]
第二个问题,目前应该还不支持通过SET在DDL里设置ttl的.

Best,
Leonard Xu
[1] https://issues.apache.org/jira/browse/FLINK-17829 <https://issues.apache.org/jira/browse/FLINK-17829>
[2] https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/query_configuration.html <https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/query_configuration.html>



> 在 2020年6月4日,09:11,xu yihan <my...@126.com> 写道:
> 
> 各位好,
> 
> 我有一个需求是要维表关联mysql数据,再upsert写入mysql,就是个丰富字段的简单需求。
> 
> 现在有两个问题:
> 1.为了实现upsert插入,我试下来必须使用groupby指定key,但是select内又有很多非聚合项,所以没办法在groupby后面加上所有那些非聚合项,否则通不过calcite validation。
> 
> 2.现在遇到了一个问题,跑一段时间会抱full GC,我估计是因为groupby导致的状态不清理。
> 请问flink sql ddl能通过类似SET 语句来设定ttl吗,搜了官方文档只有提到table api里有setIdelStateRententionTime。
> 
> 感谢各位的指教。
>