Re: Re: flink-sql watermark问题

2020-05-29 文章 wangweigu...@stevegame.cn

你的代码: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问题

2020-05-28 文章 Benchao Li
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问题

2020-05-28 文章 guaishushu1...@163.com
而且 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问题

2020-05-28 文章 guaishushu1...@163.com

就是我是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问题

2020-05-28 文章 程龙



可以先在之前对于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问题

2020-05-28 文章 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


回复: flink-sql watermark问题

2020-05-28 文章 112039...@qq.com
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问题

2020-05-28 文章 guaishushu1...@163.com
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