flink作业具体的错误信息是 “Caused by: java.lang.NumberException: For input string: ‘’ . Overflow.”,但从报错信息上看还是无法直接锁定问题的。
这个错误说的是在进行左连接时,Flink SQL 作业遇到了一个数字溢出的问题。这表示在某个地方尝试将一个空字符串转换为数字时发生了溢出。
我的这个实际作业是flink sql作业用kafka流表U 去 left join hive 维表 CU,join关联字段 cast(U.CHANNLE_ID as decimal(14,0))=CU.id
这里就是可以发现,实际是kafka debezium-json数据中的CHANNLE_ID 有''空字段的情况,造成了上面的异常。
解决:流表进行过滤,比如(select * from U where CHANNLE_ID <> '') as 表名 作为过滤后的流表即可。
注意上面的代码where CHANNLE_ID <> '' 不能写成where CHANNLE_ID != ''
因为flink sql 不支持 !=这种不等号写法。