Hi all, I have updated the flip according to the discussion, and we will extend the watermark-related features with both table options and 'OPTIONS' hint, like this:
``` -- 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 ( 'watermark.emit.strategy'='ON_PERIODIC', ... ); -- use 'OPTIONS' hint select ... from source_table /*+ OPTIONS('watermark.emit.strategy'= 'ON_PERIODIC') */ ``` Does everybody have any other questions? Best Kui Yuan kui yuan <catye...@gmail.com> 于2023年2月23日周四 20:05写道: > Hi all, > > Thanks for all suggestions. > > We will extend the watermark-related features in SQL layer with dynamic > table options and 'OPTIONS' hint, just as everyone expects. I will modify > Flip-296 as discussed. > > @Martijn As far as I know, there is no hint interface in the table API, > so we can't use hint in table API directly. if we need to extend the hint > interface in the table API, maybe we need another flip. However, if we > extend the watermark-related features in the dynamic table options, maybe > we are able to use them indirectly in the table API like this[1]: > > ``` > // register a table named "Orders" > tableEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, > amount INT) WITH ('watermark.emit.strategy'='ON_EVENT'...)"); > ``` > > [1] > https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/create/ > > Best > Kui Yuan > > Yun Tang <myas...@live.com> 于2023年2月23日周四 17:46写道: > >> Thanks for the warm discussions! >> >> I had an offline discussion with Kui about the replies. I think I could >> give some explanations on the original intention to introduce another >> WATERMARK_PARAMS. If we take a look at the current datastream API, the >> watermark strategy does not belong to any specific connector. And we >> thought the dynamic table options were more like the configurations within >> some specific connector. >> >> From the review comments, I think most people feel good to make it part >> of the dynamic table options. I think this is fine if we give more clear >> scope definition of the dynamic table options here. And I also agree with >> Jingsong's concern about adding SQL syntax which is the most concerning >> part before launching this discussion. >> >> For Martijn's concern, if we accept to make the watermark-related options >> part of dynamic table options, the problem becomes another topic: how to >> support the dynamic table options in table API, which is deserved to create >> another FLIP. >> >> Best >> Yun Tang >> ________________________________ >> From: Martijn Visser <martijnvis...@apache.org> >> Sent: Thursday, February 23, 2023 17:14 >> To: dev@flink.apache.org <dev@flink.apache.org> >> Subject: Re: [DISCUSS] FLIP-296: Watermark options for table API & SQL >> >> Hi, >> >> While I can understand that there's a desire to first focus on solving >> this >> problem for SQL, I do wonder if we should ignore the Table API at this >> point. If we could include the syntax for the Table API, it potentially >> could also be implemented by another contributor without needing to create >> another FLIP. If we don't design it right now, my concern is that this >> will >> increase sparsity for the Table API which ultimately hurts adoption. >> >> With regards to the syntax, I have a preference to solve this via the >> connector options (e.g. like you can currently specify things as >> scan.startup.specific-offsets or scan.bounded.mode for the Kafka >> connector). You could still use the dynamic table options to override/add >> them. >> >> Best regards, >> >> Martijn >> >> On Thu, Feb 23, 2023 at 7:21 AM Shammon FY <zjur...@gmail.com> wrote: >> >> > Hi kui >> > >> > Thanks for your answer and +1 to yuxia too >> > >> > > we should not bind the watermark-related options to a connector to >> ensure >> > semantic clarity. >> > >> > In my opinion, adding watermark-related options to a connector is much >> more >> > clear. Currently users can define simple watermark strategy in DDL, >> adding >> > more configuration items in connector options is easy to understand >> > >> > Best, >> > Shammon >> > >> > >> > On Thu, Feb 23, 2023 at 10:52 AM Jingsong Li <jingsongl...@gmail.com> >> > wrote: >> > >> > > Thanks for your proposal. >> > > >> > > +1 to yuxia, consider watermark-related hints as option hints. >> > > >> > > Personally, I am cautious about adding SQL syntax, WATERMARK_PARAMS is >> > > also SQL syntax to some extent. >> > > >> > > We can use OPTIONS to meet this requirement if possible. >> > > >> > > Best, >> > > Jingsong >> > > >> > > On Thu, Feb 23, 2023 at 10:41 AM yuxia <luoyu...@alumni.sjtu.edu.cn> >> > > wrote: >> > > > >> > > > Hi, Yuan Kui. >> > > > Thanks for driving it. >> > > > IMO, the 'OPTIONS' hint may be not only specific to the connector >> > > options. Just as a reference, we also have `sink.parallelism`[1] as a >> > > connector options. It enables >> > > > user to specific the writer's parallelism dynamically per-query. >> > > > >> > > > Personally, I perfer to consider watermark-related hints as option >> > > hints. So, user can define a default watermark strategy for the table, >> > and >> > > if user dosen't needed to changes it, they need to do nothing in their >> > > query instead of specific it ervery time. >> > > > >> > > > [1] >> > > >> > >> https://nightlies.apache.org/flink/flink-docs-master/zh/docs/connectors/table/filesystem/#sink-parallelism >> > > > >> > > > Best regards, >> > > > Yuxia >> > > > >> > > > Best regards, >> > > > Yuxia >> > > > >> > > > ----- 原始邮件 ----- >> > > > 发件人: "kui yuan" <catye...@gmail.com> >> > > > 收件人: "dev" <dev@flink.apache.org> >> > > > 抄送: "Jark Wu" <imj...@gmail.com> >> > > > 发送时间: 星期三, 2023年 2 月 22日 下午 10:08:11 >> > > > 主题: Re: [DISCUSS] FLIP-296: Watermark options for table API & SQL >> > > > >> > > > Hi all, >> > > > >> > > > Thanks for the lively discussion and I will respond to these >> questions >> > > one >> > > > by one. However, there are also some common questions and I will >> answer >> > > > together. >> > > > >> > > > @郑 Thanks for your reply. The features mentioned in this flip are >> only >> > > for >> > > > those source connectors that implement the SupportsWatermarkPushDown >> > > > interface, generating watermarks in other graph locations is not in >> the >> > > > scope of this discussion. Perhaps another flip can be proposed >> later to >> > > > implement this feature. >> > > > >> > > > @Shammon Thanks for your reply. In Flip-296, a rejected alternative >> is >> > > > adding watermark related options in the connector options,we believe >> > that >> > > > we should not bind the watermark-related options to a connector to >> > ensure >> > > > semantic clarity. >> > > > >> > > > > What will happen if we add watermark related options in `the >> > connector >> > > > > options`? Will the connector ignore these options or throw an >> > > exception? >> > > > > How can we support this? >> > > > >> > > > If user defines different watermark configurations for one table in >> two >> > > > places, I tend to prefer the first place would prevail, but we can >> > also >> > > > throw exception or just print logs to prompt the user, which are >> > > > implementation details. >> > > > >> > > > > If one table is used by two operators with different watermark >> > params, >> > > > > what will happen? >> > > > >> > > > @Martijn Thanks for your reply. I'm sorry that we are not >> particularly >> > > > accurate, this hint is mainly for SQL, not table API. >> > > > >> > > > > While the FLIP talks about watermark options for Table API & SQL, >> I >> > > only >> > > > > see proposed syntax for SQL, not for the Table API. What is your >> > > proposal >> > > > > for the Table API >> > > > >> > > > @Jane Thanks for your reply. For the first question, If the user >> uses >> > > this >> > > > hint on those sourse that does not implement the >> > > SupportsWatermarkPushDown >> > > > interface, it will be completely invalid. The task will run as >> normal >> > as >> > > if >> > > > the hint had not been used. >> > > > >> > > > > What's the behavior if there are multiple table sources, among >> which >> > > > > some do not support `SupportsWatermarkPushDown`? >> > > > >> > > > @Jane feedback that 'WATERMARK_PARAMS' is difficult to remember, >> > perhaps >> > > > the naming issue can be put to the end of the discussion, because >> more >> > > > people like @Martijn @Shuo are considering whether these >> configurations >> > > > should be put into the DDL or the 'OPTIONS' hint. Here's what I >> > > > think, Putting these configs into DDL or putting them into 'OPTIONS' >> > hint >> > > > is actually the same thing, because the 'OPTIONS' hint is mainly >> used >> > to >> > > > configure the properties of conenctor. The reason why I want to use >> a >> > new >> > > > hint is to make sure the semantics clear, in my opinion the >> > configuration >> > > > of watermark should not be mixed up with connector. However, a new >> hint >> > > > does make it more difficult to use to some extent, for example, >> when a >> > > user >> > > > uses both 'OPTIONS' hint and 'WATERMARK_PARAMS' hint. For this >> point, >> > > maby >> > > > it is more appropriate to use uniform 'OPTIONS' hint. >> > > > On the other hand, if we enrich more watermark option keys in >> 'OPTIONS' >> > > > hints, The question will be what we treat the definatrions of >> > 'OPTIONS' >> > > > hint, is this only specific to the connector options or could be >> more? >> > > > Maybe @Jark could share more insights here. In my opion, 'OPTIONS' >> is >> > > only >> > > > related to the connector options, which is not like the gernal >> > watermark >> > > > options. >> > > > >> > > > >> > > > >> > > > Shuo Cheng <njucs...@gmail.com> 于2023年2月22日周三 19:17写道: >> > > > >> > > > > Hi Kui, >> > > > > >> > > > > Thanks for driving the discussion. It's quite useful to introduce >> > > Watermark >> > > > > options. I have some questions: >> > > > > >> > > > > What kind of hints is "WATERMARK_PARAMS"? >> > > > > Currently, we have two kinds of hints in Flink: Dynamic Table >> > Options & >> > > > > Query Hints. As described in the Flip, "WATERMARK_PARAMS" is more >> > like >> > > > > Dynamic Table Options. So two questions arise here: >> > > > > >> > > > > 1) Are these watermark options to be exposed as connector WITH >> > > options? Aa >> > > > > described in SQL Hints doc[1], "Dynamic Table Options allow to >> > > specify or >> > > > > override table options dynamically", which implies that these >> options >> > > can >> > > > > also be configured in WITH options. >> > > > > >> > > > > 2) Do we really need a new hint name like 'WATERMARK_PARAMS', >> table >> > > > > options use "OPTIONS" as hint name, like '/*+ >> > > > > OPTIONS('csv.ignore-parse-errors'='true') */', maybe we can enrich >> > more >> > > > > table option keys for watermark, e.g., /*+ >> > > > > OPTIONS('watermark.emit-strategy'='ON_PERIODIC') */. >> > > > > >> > > > > >> > > > > [1] >> > > > > >> > > > > >> > > >> > >> https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/dev/table/sql/queries/hints/ >> > > > > >> > > > > On Wed, Feb 22, 2023 at 10:22 AM kui yuan <catye...@gmail.com> >> > wrote: >> > > > > >> > > > > > Hi devs, >> > > > > > >> > > > > > >> > > > > > I'd like to start a discussion thread for FLIP-296[1]. This >> comes >> > > from an >> > > > > > offline discussion with @Yun Tang, and we hope to enrich table >> API >> > & >> > > SQL >> > > > > to >> > > > > > support many watermark-related features which were only >> implemented >> > > at >> > > > > the >> > > > > > datastream API level. >> > > > > > >> > > > > > >> > > > > > Basically, we want to introduce watermark options in table API & >> > SQL >> > > via >> > > > > > SQL hint named 'WATERMARK_PARAMS' to support features: >> > > > > > >> > > > > > 1、Configurable watermark emit strategy >> > > > > > >> > > > > > 2、Dealing with idle sources >> > > > > > >> > > > > > 3、Watermark alignment >> > > > > > >> > > > > > >> > > > > > Last but not least, thanks to Qingsheng and Jing Zhang for the >> > > initial >> > > > > > reviews. >> > > > > > >> > > > > > >> > > > > > Looking forward to your thoughts and any feedback is >> appreciated! >> > > > > > >> > > > > > >> > > > > > [1] >> > > > > > >> > > > > >> > > >> > >> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=240884405 >> > > > > > >> > > > > > >> > > > > > Best >> > > > > > >> > > > > > Yuan Kui >> > > > > > >> > > > > >> > > >> > >> >