MaxCompute有一个odps sql节点运行时报错如下,有没有哪位见过是什么原因造成的呢?FAILED: ODPS-0010000:System internal error - fuxi job failed, caused by: process killed by signal 11 用的都是to_json/nvl/row_number之类的函数,还有named_struct log view:http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun-inc.com/api&p=sixlens_dev&i=20230528150242979ge14zjqium1&token=STF0eHkvVUpXZnIxMHFobkk4SEk0L3lsN0pnPSxPRFBTX09CTzpwNF8yOTg5MTI0ODA0OTMxMTE0NjQsMTY4Nzg3ODE2Myx7IlN0YXRlbWVudCI6W3siQWN0aW9uIjpbIm9kcHM6UmVhZCJdLCJFZmZlY3QiOiJBbGxvdyIsIlJlc291cmNlIjpbImFjczpvZHBzOio6cHJvamVjdHMvc2l4bGVuc19kZXYvaW5zdGFuY2VzLzIwMjMwNTI4MTUwMjQyOTc5Z2UxNHpqcWl1bTEiXX1dLCJWZXJzaW9uIjoiMSJ9 这个任务是稳定复现的 http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun-inc.com/api&p=sixlens_dev&i=20230528152036227g7frep1w0gk4&token=bjlDYStPRm5PUFN6L09KZ0xlbHJsQm94dEhvPSxPRFBTX09CTzpwNF8yOTg5MTI0ODA0OTMxMTE0NjQsMTY4Nzg3OTIzNix7IlN0YXRlbWVudCI6W3siQWN0aW9uIjpbIm9kcHM6UmVhZCJdLCJFZmZlY3QiOiJBbGxvdyIsIlJlc291cmNlIjpbImFjczpvZHBzOio6cHJvamVjdHMvc2l4bGVuc19kZXYvaW5zdGFuY2VzLzIwMjMwNTI4MTUyMDM2MjI3ZzdmcmVwMXcwZ2s0Il19XSwiVmVyc2lvbiI6IjEifQ==
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的报错信息和知识库资料,以下是针对问题的详细分析和解决方案:
报错信息如下:
FAILED: ODPS-0010000:System internal error - fuxi job failed, caused by: process killed by signal 11
关键点: 1. 错误码 ODPS-0010000
表示系统内部错误。 2. 报错原因显示为 process killed by signal 11
,这通常与以下情况相关: - 内存不足:任务运行时实际使用的资源超出计划分配的资源,导致进程被强制终止。 - 代码异常:SQL中使用的函数(如 to_json
、nvl
、row_number
、named_struct
等)可能存在逻辑问题或性能瓶颈,导致运行时崩溃。
如果任务运行时实际使用的资源超出计划分配的资源,可能会触发 process killed by signal 11
的错误。可以通过以下步骤排查和解决:
检查资源使用情况
根据知识库中的描述,报错信息中会包含 plannedResource
和 usedResource
的具体数值。请通过 Logview 查看任务的实际资源使用情况,确认是否存在资源超用的情况。
调整资源参数
如果确认是资源不足导致的问题,可以通过以下方式增加资源分配:
SET odps.stage.mapper.mem=8192; -- 增加Mapper内存限制(单位:MB)
SET odps.stage.mapper.split.size=4096; -- 调整Mapper分片大小(单位:MB)
根据任务需求适当调大这些参数,确保计划资源能够满足实际需求。
优化SQL逻辑
如果任务涉及复杂计算(如 to_json
或 named_struct
),可以尝试拆分SQL逻辑,减少单次任务的计算量。
SQL中使用的函数(如 to_json
、nvl
、row_number
、named_struct
)可能存在以下问题:
函数性能瓶颈
某些函数(如 to_json
)在处理大规模数据时可能会导致性能问题。建议检查这些函数的输入数据规模,并优化数据处理逻辑。
非法参数类型
根据知识库中的描述,非法参数类型可能导致函数运行失败。例如:
FAILED: ODPS-0130221:[1,8] Invalid number of arguments - function from_utc_timestamp needs 2 parameters, actually have 1
请检查 SQL 中所有函数的参数数量和类型是否正确。
死循环或异常逻辑
如果使用了 UDF(用户自定义函数),可能存在死循环或性能问题。建议在 UDF 中增加日志输出,定位问题所在。例如:
# Python 3 环境
print('Processing data...', flush=True)
如果任务中存在数据倾斜(如 row_number
或 named_struct
处理的数据分布不均),可能会导致部分节点负载过高,进而触发 process killed by signal 11
。
检查数据分布
使用 Logview 查看任务的输入数据分布情况,确认是否存在数据倾斜。
优化数据分布
如果存在数据倾斜,可以通过以下方式优化:
SET odps.sql.skewjoin=true; -- 开启倾斜连接优化
如果以上方法均无法解决问题,可能是系统层面的异常。根据知识库中的描述,ODPS-0010000
错误有时需要重试任务。
重试任务
尝试重新提交任务,观察是否仍然报错。
联系技术支持
如果问题持续存在,请通过钉钉群反馈问题,并提供 Logview 地址以便进一步排查。
plannedResource
和 usedResource
,确认是否存在资源超用。希望以上内容能够帮助您快速定位并解决问题!如果仍有疑问,请随时补充更多信息以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。