You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 张健 <zh...@163.com> on 2022/01/10 04:30:23 UTC

Flink 1.12 Blink planner timestamp类型转换异常

Hi, all




flink1.12 Blink planner有人遇到过这样的问题么:



下面是简化的逻辑
DataStream<Row> ds = xxxx.map(xxxRichMapFunction);
Table table = tableEnv.fromDataStream(ds);
tableEnv.toAppendStream(table.select(xxx).keyBy(xxx), Row.class).addSink(xxxRichSinkFunction);


xxxRichMapFunction中对某个字段写了row.setField(index, java.sql.timestamp.valueOf(str)); 即写入的值是一个 java.sql.timestamp类型的字段,且xxxRichMapFunction 中getProducedType() 中对应的位置也是Types.SQL_TIMESTAMP。
但在xxxRichSinkFunction我读取该字段时,却变成了java.time.LocalDateTime类型,导致在JdbcUtils.setRecordToStatement中抛出了java.lang.ClassCastException


我用 Blink planner就会有这个问题,如果程序启动时用useOldPlanner()就不会有这个问题。


张健