...
Discussion thread | https://lists.apache.org/thread/d681bx4t935c30zl750gy6d41tfypbph | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Vote thread | https://lists.apache.org/thread/79thsvkfpgsqnktodj2901jp538js19j | ||||||||||
JIRA |
| JIRA
| |||||||||
Release | -1.18.0 |
Motivation
Now many watermark-related features such as the watermark alignment have been implemented on the datastream API, and it is very convenient and flexible to configure and use these features through the datastream API. However, there is currently no way to use these features through SQL.
...
Code Block | ||||
---|---|---|---|---|
| ||||
CREATE TABLE user_actions ( user_name STRING, `data` STRING, current_time as CURRENT_TIMESTAMPproctime(), WATERMARK FOR current_time AS current_time ) WITH ( ... ); |
...
Code Block | ||
---|---|---|
| ||
-- configure in table options CREATE TABLE user_actions ( ... user_action_time TIMESTAMP(3), WATERMARK FOR user_action_time AS user_action_time - INTERVAL '5' SECOND ) WITH ( 'scan.watermark.idle-timeout'='1min', ... ); -- use 'OPTIONS' hint select ... from source_table /*+ OPTIONS('scan.watermark.idle-timeout'='1min') */ |
...
the option 'watermark.alignment.update-interval' is not required. the default value is 1s.
Note source connectors have to implement watermark alignment of source split in order to use the watermark alignment feature since 1.17 according flip-217 [2]. If source connector does not implement flip-217, the task will run with an error, user could set 'pipeline.watermark-alignment.allow-unaligned-source-splits'= 'true' to disable watermark alignment of source split, and watermark alignment will be working properly only when your number of splits equals to the parallelism of the source operator.
All the options described above :
Code Block | ||
---|---|---|
| ||
'scan.watermark.emit.strategy'='on-event',
'scan.watermark.idle-timeout'='1min',
'scan.watermark.alignment.group'='alignment-group-1',
'scan.watermark.alignment.max-drift'='1min',
'scan.watermark.alignment.update-interval'='1s' |
...
To describe the watermark launch emit strategy, we need to add an enumeration class:
...
If some of the features are not supported, such as the watermark alignment feature on Kinesis connector, it will behave as FLIP-182 [23] and FLIP-217 [32] designed.
Rejected Alternatives
...
This idea is like extending FLIP-66[14]. However, since we already have many options for watermark related features, this would make the DDL complex and lengthy.
...
[1] https://github.com/yuchengxin/flink/commits/yuankui/watermark_params
[2] https://cwiki.apache.org/confluence/display/FLINK/FLIP-66%3A+Support+Time+Attribute+in+SQL+DDL217: Support watermark alignment of source splits
[3] https://cwiki.apache.org/confluence/display/FLINK/FLIP-182%3A+182: Support + watermark + alignment + of + FLIP-27 + Sources
[4] https://cwiki.apache.org/confluence/display/FLINK/FLIP-217%3A+Support+watermark+alignment+of+source+splits 66: Support Time Attribute in SQL DDL