大数据计算MaxCompute我在dataworks上面创建了一个 oss 外表,外表配置参考图;oss 数据是日志服务投递过来的,通过【双引号】进行转义;昨天跑数是正常的,今天跑数据的时候报错了,逻辑没有变过。在尝试解决过程中发现了日志记录的逗号个数是61个,和切分的字段数62一致,从这个推断应该是转义符失效了,或者没法识别。虽然oss外表配置加了【'odps.text.option.use.quote'='true'】但是没有识别出来,而且加了【'odps.sql.text.schema.mismatch.mode'='ignore'】似乎也不起作用。截取部分关键报错:FAILED: ODPS-0123131:User defined function exception - Traceback:java.lang.RuntimeException: SCHEMA MISMATCH: External Table schema specified a total of [21] columns, but current text line parsed into [62] columns delimited by [,]. …… add odps.sql.text.schema.mismatch.mode = (ignore,truncate,error) in serdeproperty to handle schema mismatch. at com.aliyun.odps.udf.impl.builtin.storagehandler.BuiltinTextExtractor.extract(BuiltinTextExtractor.java:225) at com.aliyun.odps.udf.ExtractorHandler.next(ExtractorHandler.java:149)
oss外部表 odps.sql.text.schema.mismatch.mode' = 'truncate'
这个参数不支持和
odps.text.option.use.quote'='true'
混用
是开发表发布到生产环境之后DDL变了,配置的参数都没了。这俩参数目前看来是没有冲突的。
,此回答整理自钉群“MaxCompute开发者社区2群”
这个问题是关于MaxCompute中OSS外表配置的问题。根据你提供的信息,错误提示显示"SCHEMA MISMATCH: External Table schema specified a total of [21] columns, but current text line parsed into [62] columns delimited by [,]",这表明在OSS外表中定义的表结构有21列,但是实际解析的文本行却分成了62个字段,这可能是因为转义符处理出现问题。
针对这个问题,我建议按照以下步骤进行排查和解决:
'odps.text.option.use.quote'='true'
来启用双引号转义,但是可能存在其他配置项或环境因素导致转义符失效。需要检查以下几点:* 确认OSS外表配置中的其他设置是否与转义符相关,并确保它们的设置是正确的。
* 确认日志服务投递的数据中是否正确使用了双引号作为转义符。
'odps.sql.text.schema.mismatch.mode'='ignore'
来忽略模式不匹配的错误,但是似乎没有起作用。可以尝试更改模式为'truncate'或'error',以观察是否有不同的效果。ODPS-0123131:User defined function exception
模块:PROCESSOR。
严重等级:1。
触发条件:自定义函数异常。
处理方法:修改自定义函数。
https://help.aliyun.com/zh/maxcompute/user-guide/sql-errors?spm=a2c4g.11186623.0.i19
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。