详细错误如下:
ODPS-0123131:User defined function exception – Traceback:
java.lang.NumberFormatException: For input string: “\N”
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.parseLong(Long.java:631)
at com.aliyun.odps.udf.impl.builtin.storagehandler.BuiltinTextExtractor.textLineToRecord(BuiltinTextExtractor.java:274)
at com.aliyun.odps.udf.impl.builtin.storagehandler.BuiltinTextExtractor.extract(BuiltinTextExtractor.java:233)
at com.aliyun.odps.udf.ExtractorHandler.next(ExtractorHandler.java:149)
外部表是加载的oss的csv目录,insert into a select * from b limit 100这样没有问题,这个上面的错误也不知道具体是读到哪列报错,每个CSV文件又是大文件,难排查啊
maxcompute查询外部表insert到内部表报错,两表字段一致[阿里云]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
根据错误信息,这个问题看起来是由于解析外部表数据时发生了数值格式错误。错误中提到了一个 “N” 的输入字符串,导致无法将其转换为数字类型。
有几种可能的原因和解决方法:
数据格式错误:确保您的外部表数据与内部表的字段类型匹配。检查外部表数据中是否包含不符合预期的数据格式,例如某些列应该是数字类型,但实际上包含了 “N” 或其他非数字字符。
自定义函数(UDF):如果在查询过程中使用了自定义函数,检查自定义函数的逻辑是否正确处理了数据类型,避免出现异常情况。
数据源问题:检查外部表的数据源文件,确保每一行的数据都符合预期的格式和数据类型。
异常数据过滤:考虑对加载数据进行预处理,例如在加载数据前先通过脚本或工具进行数据质量检查和筛选,以排除可能引发异常的数据。
分步调试:如果问题仍然存在,并且难以确定具体是哪一列引发了错误,可以尝试分步调试。例如,逐个字段地插入数据,确定在哪个字段上出现了错误,并进一步定位问题。