flink任务处理下线流水数据,数据遗漏不全(二)

文章讨论了在使用Flink处理下线流水数据时遇到的问题,具体表现为T43-2数据在凌晨3点缺失。经过验证,问题可能与spec字段转换为float类型时的异常有关,由于spec为空字符串导致转换失败。日志中的SQLSyntaxErrorException提示NaN未知列,进一步指向数据插入数据库时的冲突。作者认为这可能是代码存在的bug,需要检查对null值的处理。
摘要由CSDN通过智能技术生成


flink任务处理下线流水数据,数据遗漏不全(一)

后续问题跟踪

Test3   只接受T4301的数据

 一切正常

Test2  接受所有T11的数据

  一切正常


2023-04-07 08:15日

1、Job任务的验证(整个铜线)

T43-1正确

T43-2 少一个

T43-3正确

T43-4正确

2、Test2 (T43主题)

T43-1 、T43-3、T43-4都正确,T43-2少一个;

3、Test3 (T43-1主题)

T43-1全部正确


为什么会少一个T43-2凌晨3点的数据呢?

用chunjun的代码与自己写的代码测试写入chunjun表和tjn_test表,都少T43-2凌晨3点的数据

以上证明与数据量无关!!!

继续观察chunjun代码与自己写的,时间长了会如何???谁的稳定性更强!!!

查看了日志,发现有一个错误

java.sql.SQLSyntaxErrorException: Unknown column 'NaN' in 'field list'
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
	at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370)
	at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)

用Bing查看了这个错误,我发现是转换为int float类型数据异常。但是报错的日志仅仅指向sql语句而不是某个转换的代码,所以我猜测是数据插入到mysql表中发生冲突。

表中有三个字段是浮点类型的,最大的可能是spec和weight;

chunjun的代码运行一直并未报错,存储到数据库都正常的;说明与weight无关!!

我觉得是spec这里,若获取的spec是空字符串的话,那么转化为float类型就会报错;

我好像知道了,这里代码有问题;既然是null,怎么可能获取到,转换自然有问题

 我觉得出现这个错误的原因是在spec这里有问题、还有本身存在bug,把null转换为float异常


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_37591637

请给我持续更新的动力~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值