Flink sql 报错问题以及解决
记录在使用Flink sql时出现的问题以及解决方式
1.时间戳问题
消费kafka数据,转换成一个DataStream后,通过tableEnv进行将DataStream的数据注册成表,在执行查询的时候出现了报错,后再进入到官网查看,说需要传入一个timestamp而我传入的是一个BigInt,导致出现了报错,
1 2 | org.apache.flink.table.api.ValidationException: SQL validation failed. From line 1, column 121 to line 1, column 157: Cannot apply 'TUMBLE' to arguments of type 'TUMBLE(<VARCHAR(65536)>, <INTERVAL MINUTE>)'. Supported form(s): 'TUMBLE(<DATETIME>, <DATETIME_INTERVAL>)' 'TUMBLE(<DATETIME>, <DATETIME_INTERVAL>, <TIME>)' |
这个问题我查找半天,我传入了时间戳,而他要的是timestamp,后来去官网查找,由于官网没有给具体的一个原因,后来我在Flink的钉钉的Apache Flink China社区群中,群中Committer大佬指出了问题

image.png
在我后来的代码我中将元素中的时间戳 新加字段Timestamp类型,在注册表的时候,将时间戳指定为rowTime,在后面就可以使用时间进行窗口操作了
也就是说我们直接使用时间戳是不行的,因为Flink会将我们的时间戳识别成BigInt,所以我们需要在创建之初需要将时间戳转换成Timestamp类型才可以
具体代码

image.png

image.png