Re: Re: flink-sql watermark问题
你的代码:w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss') 这里里面的 FROM_UNIXTIME 函数就是接受BIGINT参数,返回 VARCHAR类型的日期值,默认日期格式:-MM-dd HH:mm:ss 然后通过TO_TIMESTAMP函数转换成TIMESTAMP类型,是timestamp(3)类型,这个只能用blink planner 参考阿里云网址:https://help.aliyun.com/knowledge_list_page/62717/1.html?spm=a2c4g.11186631.2.4.41933356drYMGX 里面有flink 日期函数接受! 发件人: Benchao Li 发送时间: 2020-05-29 10:35 收件人: user-zh 主题: Re: Re: flink-sql watermark问题 Flink支持把Timestamp(3)这种类型声明声明为事件时间列,并且为它生成watermark。 你上面提到的"-MM-dd'T'HH:mm:ss.SSS'Z'",并不是一种数据类型,它只是Timestamp的一种string表达形式,这个主要是在json format里面把一个字符串解析为timestamp类型的时候需要的一种格式。 所以如果你有其他类型的字段,比如varchar、long、int等等,都可以通过内置函数或者udf将其转成timestamp(3)的类型,再在此基础上做watermark生成。 guaishushu1...@163.com 于2020年5月29日周五 上午10:25写道: > 而且 flink不是只支持这种"-MM-dd'T'HH:mm:ss.SSS'Z'" 类型解析为watermark吗,就对这样有点疑惑 > > > > guaishushu1...@163.com > > 发件人: guaishushu1...@163.com > 发送时间: 2020-05-29 10:20 > 收件人: Benchao Li > 抄送: user-zh > 主题: Re: Re: flink-sql watermark问题 > > 就是我是long类型的时间戳,但是用TO_TIMESTAMP转换成'-MM-dd HH:mm:ss' 之后依然可以生成watermark。 > > > guaishushu1...@163.com > > 发件人: Benchao Li > 发送时间: 2020-05-28 17:00 > 收件人: user-zh > 主题: Re: flink-sql watermark问题 > Hi, > > 没太看明白你的问题是什么。目前的确是只支持Timestmap(3)作为事件时间列。 > 之所以还不支持long作为事件时间列,主要考虑的是时区问题。但是这个社区也在考虑,可以参考[1] > > [1] https://issues.apache.org/jira/browse/FLINK-16938 > > guaishushu1...@163.com 于2020年5月28日周四 下午4:22写道: > > > flink-1.10 sql只支持 timestamp(3) 类型字段生成watermark > > 但是long这样转换后也可以生成watermark很奇怪? > > CREATE TABLE user_log ( > > response_size int, > > rowtime BIGINT, > > w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss'), > > WATERMARK FOR w_ts AS w_ts - INTERVAL '5' SECOND --5秒的延迟 > > ) > > > > > > > > guaishushu1...@163.com > > > > > -- > > Best, > Benchao Li > -- Best, Benchao Li
Re: Re: flink-sql watermark问题
Flink支持把Timestamp(3)这种类型声明声明为事件时间列,并且为它生成watermark。 你上面提到的"-MM-dd'T'HH:mm:ss.SSS'Z'",并不是一种数据类型,它只是Timestamp的一种string表达形式,这个主要是在json format里面把一个字符串解析为timestamp类型的时候需要的一种格式。 所以如果你有其他类型的字段,比如varchar、long、int等等,都可以通过内置函数或者udf将其转成timestamp(3)的类型,再在此基础上做watermark生成。 guaishushu1...@163.com 于2020年5月29日周五 上午10:25写道: > 而且 flink不是只支持这种"-MM-dd'T'HH:mm:ss.SSS'Z'" 类型解析为watermark吗,就对这样有点疑惑 > > > > guaishushu1...@163.com > > 发件人: guaishushu1...@163.com > 发送时间: 2020-05-29 10:20 > 收件人: Benchao Li > 抄送: user-zh > 主题: Re: Re: flink-sql watermark问题 > > 就是我是long类型的时间戳,但是用TO_TIMESTAMP转换成'-MM-dd HH:mm:ss' 之后依然可以生成watermark。 > > > guaishushu1...@163.com > > 发件人: Benchao Li > 发送时间: 2020-05-28 17:00 > 收件人: user-zh > 主题: Re: flink-sql watermark问题 > Hi, > > 没太看明白你的问题是什么。目前的确是只支持Timestmap(3)作为事件时间列。 > 之所以还不支持long作为事件时间列,主要考虑的是时区问题。但是这个社区也在考虑,可以参考[1] > > [1] https://issues.apache.org/jira/browse/FLINK-16938 > > guaishushu1...@163.com 于2020年5月28日周四 下午4:22写道: > > > flink-1.10 sql只支持 timestamp(3) 类型字段生成watermark > > 但是long这样转换后也可以生成watermark很奇怪? > > CREATE TABLE user_log ( > > response_size int, > > rowtime BIGINT, > > w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss'), > > WATERMARK FOR w_ts AS w_ts - INTERVAL '5' SECOND --5秒的延迟 > > ) > > > > > > > > guaishushu1...@163.com > > > > > -- > > Best, > Benchao Li > -- Best, Benchao Li
Re: Re: flink-sql watermark问题
而且 flink不是只支持这种"-MM-dd'T'HH:mm:ss.SSS'Z'" 类型解析为watermark吗,就对这样有点疑惑 guaishushu1...@163.com 发件人: guaishushu1...@163.com 发送时间: 2020-05-29 10:20 收件人: Benchao Li 抄送: user-zh 主题: Re: Re: flink-sql watermark问题 就是我是long类型的时间戳,但是用TO_TIMESTAMP转换成'-MM-dd HH:mm:ss' 之后依然可以生成watermark。 guaishushu1...@163.com 发件人: Benchao Li 发送时间: 2020-05-28 17:00 收件人: user-zh 主题: Re: flink-sql watermark问题 Hi, 没太看明白你的问题是什么。目前的确是只支持Timestmap(3)作为事件时间列。 之所以还不支持long作为事件时间列,主要考虑的是时区问题。但是这个社区也在考虑,可以参考[1] [1] https://issues.apache.org/jira/browse/FLINK-16938 guaishushu1...@163.com 于2020年5月28日周四 下午4:22写道: > flink-1.10 sql只支持 timestamp(3) 类型字段生成watermark > 但是long这样转换后也可以生成watermark很奇怪? > CREATE TABLE user_log ( > response_size int, > rowtime BIGINT, > w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss'), > WATERMARK FOR w_ts AS w_ts - INTERVAL '5' SECOND --5秒的延迟 > ) > > > > guaishushu1...@163.com > -- Best, Benchao Li
Re: Re: flink-sql watermark问题
就是我是long类型的时间戳,但是用TO_TIMESTAMP转换成'-MM-dd HH:mm:ss' 之后依然可以生成watermark。 guaishushu1...@163.com 发件人: Benchao Li 发送时间: 2020-05-28 17:00 收件人: user-zh 主题: Re: flink-sql watermark问题 Hi, 没太看明白你的问题是什么。目前的确是只支持Timestmap(3)作为事件时间列。 之所以还不支持long作为事件时间列,主要考虑的是时区问题。但是这个社区也在考虑,可以参考[1] [1] https://issues.apache.org/jira/browse/FLINK-16938 guaishushu1...@163.com 于2020年5月28日周四 下午4:22写道: > flink-1.10 sql只支持 timestamp(3) 类型字段生成watermark > 但是long这样转换后也可以生成watermark很奇怪? > CREATE TABLE user_log ( > response_size int, > rowtime BIGINT, > w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss'), > WATERMARK FOR w_ts AS w_ts - INTERVAL '5' SECOND --5秒的延迟 > ) > > > > guaishushu1...@163.com > -- Best, Benchao Li
Re:Re: flink-sql watermark问题
可以先在之前对于long类型的字段转换成Timestmap 类型 再生成watermark 在 2020-05-28 17:00:53,"Benchao Li" 写道: >Hi, > >没太看明白你的问题是什么。目前的确是只支持Timestmap(3)作为事件时间列。 >之所以还不支持long作为事件时间列,主要考虑的是时区问题。但是这个社区也在考虑,可以参考[1] > >[1] https://issues.apache.org/jira/browse/FLINK-16938 > >guaishushu1...@163.com 于2020年5月28日周四 下午4:22写道: > >> flink-1.10 sql只支持 timestamp(3) 类型字段生成watermark >> 但是long这样转换后也可以生成watermark很奇怪? >> CREATE TABLE user_log ( >> response_size int, >> rowtime BIGINT, >> w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss'), >> WATERMARK FOR w_ts AS w_ts - INTERVAL '5' SECOND --5秒的延迟 >> ) >> >> >> >> guaishushu1...@163.com >> > > >-- > >Best, >Benchao Li
Re: flink-sql watermark问题
Hi, 没太看明白你的问题是什么。目前的确是只支持Timestmap(3)作为事件时间列。 之所以还不支持long作为事件时间列,主要考虑的是时区问题。但是这个社区也在考虑,可以参考[1] [1] https://issues.apache.org/jira/browse/FLINK-16938 guaishushu1...@163.com 于2020年5月28日周四 下午4:22写道: > flink-1.10 sql只支持 timestamp(3) 类型字段生成watermark > 但是long这样转换后也可以生成watermark很奇怪? > CREATE TABLE user_log ( > response_size int, > rowtime BIGINT, > w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss'), > WATERMARK FOR w_ts AS w_ts - INTERVAL '5' SECOND --5秒的延迟 > ) > > > > guaishushu1...@163.com > -- Best, Benchao Li
回复: flink-sql watermark问题
w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss'),这个语句产生的就是一个timestamp的数据Flink内置函数:https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/table/functions/systemFunctions.htmlFROM_UNIXTIME(numeric[, string]): Returns a representation of the numeric argument as a value in string format (default is '-MM-DD hh:mm:ss'). numeric is an internal timestamp value representing seconds since '1970-01-01 00:00:00' UTC, such as produced by the UNIX_TIMESTAMP() function. The return value is expressed in the session time zone (specified in TableConfig). E.g., FROM_UNIXTIME(44) returns '1970-01-01 09:00:44' if in UTC time zone, but returns '1970-01-01 09:00:44' if in 'Asia/Tokyo' time zone. Only supported in blink planner. TO_TIMESTAMP(string1[, string2]): Converts date time string string1 with format string2 (by default: '-MM-dd HH:mm:ss') under the session time zone (specified by TableConfig) to a timestamp. Only supported in blink planner. 112039...@qq.com 发件人: guaishushu1...@163.com 发送时间: 2020-05-28 16:22 收件人: user-zh 主题: flink-sql watermark问题 flink-1.10 sql只支持 timestamp(3) 类型字段生成watermark 但是long这样转换后也可以生成watermark很奇怪? CREATE TABLE user_log ( response_size int, rowtime BIGINT, w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss'), WATERMARK FOR w_ts AS w_ts - INTERVAL '5' SECOND --5秒的延迟 ) guaishushu1...@163.com
flink-sql watermark问题
flink-1.10 sql只支持 timestamp(3) 类型字段生成watermark 但是long这样转换后也可以生成watermark很奇怪? CREATE TABLE user_log ( response_size int, rowtime BIGINT, w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'-MM-dd HH:mm:ss'), WATERMARK FOR w_ts AS w_ts - INTERVAL '5' SECOND --5秒的延迟 ) guaishushu1...@163.com