在Flink SQL的JDBC Connector中,Oracle的TIMESTAMP字段类型转换异常问题

classic Classic list List threaded Threaded
2 messages Options
111
Reply | Threaded
Open this post in threaded view
|

在Flink SQL的JDBC Connector中,Oracle的TIMESTAMP字段类型转换异常问题

111
Hi,
在使用Flink SQL读写Oracle JDBC表时,遇到了timestamp转换异常:
Caused by: java.lang.ClassCastException: oracle.sql.TIMESTAMP cannot be cast to java.sql.Timestamp at org.apache.flink.table.dataformat.DataFormatConverters$TimestampConverter.toInternalImpl(DataFormatConverters.java:860) at org.apache.flink.table.dataformat.DataFormatConverters$DataFormatConverter.toInternal(DataFormatConverters.java:344) at org.apache.flink.table.dataformat.DataFormatConverters$RowConverter.toInternalImpl(DataFormatConverters.java:1377) at org.apache.flink.table.dataformat.DataFormatConverters$RowConverter.toInternalImpl(DataFormatConverters.java:1365)
看报错原因是Oracle JDBC返回的是oracle.sql.Timestamp, 而Flink的runtime-blink里面需要的参数类型java.sql.Timestamp。网上看到了解决方案:https://stackoverflow.com/questions/13269564/java-lang-classcastexception-oracle-sql-timestamp-cannot-be-cast-to-java-sql-ti/22055190#22055190不过我们是yarn session模式启动,如果想要修改系统参数需要把集群的每个参数都修改一遍。请问官方是否遇到这个问题,如何更优雅的解决?
Best,Xinghalo
Reply | Threaded
Open this post in threaded view
|

Re:在Flink SQL的JDBC Connector中,Oracle的TIMESTAMP字段类型转换异常问题

sunfulin



Hi,
据我所知现在还不能直接支持Oracle的driver吧?你是怎么使用Flink SQL读写oracle的哈?














在 2020-03-27 17:21:21,"111" <[hidden email]> 写道:
>Hi,
>在使用Flink SQL读写Oracle JDBC表时,遇到了timestamp转换异常:
>Caused by: java.lang.ClassCastException: oracle.sql.TIMESTAMP cannot be cast to java.sql.Timestamp at org.apache.flink.table.dataformat.DataFormatConverters$TimestampConverter.toInternalImpl(DataFormatConverters.java:860) at org.apache.flink.table.dataformat.DataFormatConverters$DataFormatConverter.toInternal(DataFormatConverters.java:344) at org.apache.flink.table.dataformat.DataFormatConverters$RowConverter.toInternalImpl(DataFormatConverters.java:1377) at org.apache.flink.table.dataformat.DataFormatConverters$RowConverter.toInternalImpl(DataFormatConverters.java:1365)
>看报错原因是Oracle JDBC返回的是oracle.sql.Timestamp, 而Flink的runtime-blink里面需要的参数类型java.sql.Timestamp。网上看到了解决方案:https://stackoverflow.com/questions/13269564/java-lang-classcastexception-oracle-sql-timestamp-cannot-be-cast-to-java-sql-ti/22055190#22055190不过我们是yarn session模式启动,如果想要修改系统参数需要把集群的每个参数都修改一遍。请问官方是否遇到这个问题,如何更优雅的解决?
>Best,Xinghalo