Presto SQL 常见报错汇总

文章描述了在处理数据时遇到的类型转换问题,特别是当尝试将超过整数范围的值(如-61792617943)转换为int类型时,会导致`Outofrangeforinteger`和`ArithmeticException`。另外,提到了写入时字段类型不匹配的错误,以及Python中使用PyHive进行类型转换时遇到的问题。文章还提及了因表结构变更导致的Sqoop空指针异常,强调了数据验证和类型匹配的重要性。

1.字段类型转换问题 cast

{‘message’: ‘Out of range for integer: -61792617943’, ‘errorCode’: 19, ‘errorName’: ‘NUMERIC_VALUE_OUT_OF_RANGE’, ‘errorType’: ‘USER_ERROR’, ‘failureInfo’: {‘type’: ‘com.facebook.presto.spi.PrestoException’, ‘message’: ‘Out of range for integer: -61792617943’, ‘cause’: {‘type’: ‘java.lang.ArithmeticException’, ‘message’: ‘integer overflow’, ‘suppressed’: [], ‘stack’: [‘java.lang.Math.toIntExact(Math.java:1011)’, ‘com.facebook.presto.type.BigintOperators.castToInteger(BigintOperators.java:194)’
此报错说明sql中 cast(xx as int) 类型转换错误,原字段超过了int范围-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) -61792617943,排查时 where xx = -61792617943

如果是写入时字段类型不匹配,不会报上面的错,而是下面
‘errorCode’: 1, ‘errorName’: ‘SYNTAX_ERROR’, ‘errorType’: ‘USER_ERROR’, ‘failureInfo’: {‘type’: ‘com.facebook.presto.sql.analyzer.SemanticException’, ‘message’: ‘Insert query has mismatched column types: Table: [varchar, date],Query: [varchar, varchar]’

注意类型转换 Cannot cast,2 是2位,长度是2,有脏数据,排查代码中类型转换且原字符串长度是2的地方
pyhive.exc.DatabaseError: {‘message’: “Cannot cast ‘*2’ to INT”, ‘errorCode’: 9, ‘errorName’: ‘INVALID_CAST_ARGUMENT’, ‘errorType’: ‘USER_ERROR’, ‘failureInfo’: {‘type’: ‘com.facebook.presto.spi.PrestoException’, ‘message’: “Cannot cast ‘*2’ to INT”

PS:
表结构变更导致的 sqoop 报错 空指针 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

光于前裕于后

您的打赏将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值