问题一:flink1.11 sql kafka 抽取事件时间
使用flink1.11 sql接入kafka ,format为csv
从eventTime字段中抽取事件时间
rowtime AS TO_TIMESTAMP(FROM_UNIXTIME(eventTime / 1000, 'yyyy-MM-dd HH:mm:ss'))
eventTime可能存在脏数据(非13位的毫秒时间戳),设置了 'csv.ignore-parse-errors' = 'true', 那么eventTime会被设置为null,此时会报一个异常:
Caused by: java.lang.RuntimeException: RowTime field should not be null, please convert it to a non-null long value.
有没有什么好的方式可以解决
参考回答:
我感觉可以通过计算列的方式来解决呀,你只需要在计算rowtime这个列的时候保证它不是null即可,如果是null,可以设置一个默认值之类的?
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/372100
问题二:flink sql 1.10 insert into tb select 复杂schema 失败
create table xxx ( a string, b row( c row(d string) ) ) 当c 中有值的时候,sql 如下 insert into select * from xxx会出现下面错误 Caused by: java.lang.ClassCastException: org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.NullNode cannot be cast to org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ObjectNode at org.apache.flink.formats.json.JsonRowSerializationSchema.lambda$assembleRowConverter$dd344700$1(JsonRowSerializationSchema.java:337) at org.apache.flink.formats.json.JsonRowSerializationSchema.lambda$wrapIntoNullableConverter$1fa09b5b$1(JsonRowSerializationSchema.java:189) at org.apache.flink.formats.json.JsonRowSerializationSchema.lambda$assembleRowConverter$dd344700$1(JsonRowSerializationSchema.java:345) at org.apache.flink.formats.json.JsonRowSerializationSchema.lambda$wrapIntoNullableConverter$1fa09b5b$1(JsonRowSerializationSchema.java:189) at org.apache.flink.formats.json.JsonRowSerializationSchema.lambda$assembleRowConverter$dd344700$1(JsonRowSerializationSchema.java:345) at org.apache.flink.formats.json.JsonRowSerializationSchema.lambda$wrapIntoNullableConverter$1fa09b5b$1(JsonRowSerializationSchema.java:189) at org.apache.flink.formats.json.JsonRowSerializationSchema.serialize(JsonRowSerializationSchema.java:138) ... 38 more
参考回答:
这是一个已知bug[1],已经在1.10.1和1.11.0中修复了,可以尝试下这两个版本。
[1] https://issues.apache.org/jira/browse/FLINK-16220
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/372105
问题三:Flink1.10 flinksql 多表join状态ttl不成功的问题
http://apache-flink.147419.n8.nabble.com/file/t447/ttl.png 我用flink sql 设置了 空闲状态的清理时间,但是 状态还是一直增加,里面有 多次 group by 和多次 流表的关联 。 代码如下: tEnv.getConfig() .setIdleStateRetentionTime(Time.hours(minIdleStateRetentionTime),
Time.hours(maxIdleStateRetentionTime));
程序运行一周之后状态现在2.2G. 最近几天越来越大,表现在ttl没有成功,请教一下各位大佬
参考回答:
没有窗口,就简单的表join,有kafka流表 ,kudu维表,使用了group by
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/372106
问题四:TableEnvironment 里面无法执行 Hop等窗口函数
TableEnvironment 里面无法执行 Hop等窗口函数,使用StreamTableEnvironment 则可以执行,Flink版本1.10 是否是这样的
参考回答:
滑动窗口只有在stream里面才会有
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/372109
问题五:滑动窗口数据存储多份问题
想咨询下大家,为什么使用 datastream api 的话,滑动窗口对于每条数据都会在 state 中存 size / slide 份?
参考回答:
我理解,如果只存取一份的话,state 的管理会变得麻烦一些(所有需要这份数据的窗口都需要去某个地方取, state 什么时候清理逻辑也会变得麻烦一些)