ODPS-0010000

本文介绍错误码ODPS-0010000:System internal error的报错场景,并提供对应的解决方案。

错误1:fuxi job failed, caused by: kWorkerOutOfMemory(errCode:256) at Odps/xxx/xxx. Detail error msg: KILL_NAKILL_NA: plannedResource({Memory=xxx, CPU=xxx}) usedResource({Memory=xxx, CPU=xxx})

错误信息

ODPS-0010000:System internal error - fuxi job failed, caused by: kWorkerOutOfMemory(errCode:256) at Odps/xxx/xxx. Detail error msg: KILL_NAKILL_NA: plannedResource({Memory=xxx, CPU=xxx}) usedResource({Memory=xxx, CPU=xxx})

错误码描述

实际使用的资源大于计划使用的资源导致内存超用被杀。

解决方案

通过报错信息中的plannedResourceusedResource可以识别出计划使用资源与实际使用资源的数量,然后根据实际情况调整参数。报错信息中的Task类型分为M(mapper)、R(reducer)、J(joiner),根据报错信息执行SET操作,如odps.stage.mapper.memodps.stage.mapper.split.size

错误2:fuxi job failed, caused by: Merge into statement not support update or delete duplicate row

错误信息

ODPS-0010000:System internal error - fuxi job failed, caused by: Merge into statement not support update or delete duplicate row, please check your query, the query text location is from [line m, column n] to [line i, column j]

错误码描述

Merge into语句不支持UpdateDelete重复行,mn列至ij列的等号两边存在多行相同值导致膨胀输出重复行,引发UpdateDelete失败。

解决方案

检查mn列至ij列的等号两边是否存在多行相同值,需要先对相同值进行去重操作才能避免报错。

错误3:OSSRequestException: req_id: xxxxxx, http status code: 400, error code

错误信息

ODPS-0010000:System internal error - build/release64/common/io/oss/oss_client.cpp(99): OSSRequestException: req_id: xxxxxx, http status code: 400, error code: InvalidArgument, message: Authorization header is invalid

错误码描述

OSS侧服务临时抖动,导致服务瞬时不可用。

解决方案

执行重跑一次。

错误4:OSSRequestException:Authorization header is invalid

错误信息

ODPS-0010000:System internal error - build/release64/common/io/oss/oss_client.cpp(99): OSSRequestException: req_id: xxxxx, http status code: 400, error code: InvalidArgument, message: Authorization header is invalid

错误码描述

没有权限访问OSS文件。

解决方案

给当前访问外表的用户授权访问对应OSS外表的权限。

错误5:Shortcut optimize failed because the script is too complex

错误信息

ODPS-0010000:System internal error - Shortcut optimize failed because the script is too complex

错误码描述

SQL复杂度高,导致快捷方式优化失败。

解决方案

优化SQL语句。例如对复杂的SQL进行拆分和简化,检查是否存在嵌套过深的子查询、过多的连接操作(JOIN)、复杂的聚合函数或窗口函数等。同时建议您减少数据处理量,使用适当的WHERE子句限制查询范围,或者利用分区表的优势,仅查询必要的分区。

错误6:alloc too large size

错误信息

ODPS-0010000:System internal error - fuxi job failed, caused by: alloc too large size: xxx

错误码描述

作业在运行过程中申请了过大的内存导致运行失败。可能是MaxCompute自身的Bug,也有可能是用户数据存在异常(例如ARRAY类型字段中包含的元素数量过多)。

解决方案

检查是否存在过大的ARRAY数据,并缩减ARRAY数据量。若还是无法解决,可以通过提交工单获取技术支持。

错误7:Regex compile error

错误信息

ODPS-0010000:System internal error - fuxi job failed, caused by: Regex compile error

错误码描述

正则表达式不合法。

解决方案

修改为正确的SQL语法。

错误8:failed to get error message of java exception because of outofmemoryerror

错误信息

ODPS-0010000:System internal error - failed to get error message of java exception because of outofmemoryerror

错误码描述

内存溢出导致程序报错。

解决方案

增加以下参数调大内存。

SET odps.sql.mapper.cpu=400;
SET odps.sql.mapper.memory=8192;

错误9:codeGenCallBuiltinFunction fail in CopmareBase for function

错误信息

ODPS-0010000:System internal error - fuxi job failed, caused by: codeGenCallBuiltinFunction fail in CopmareBase for function: NEQ, xxx

错误码描述

报错多见于对不支持ARRAY类型的字段或表达式执行neq操作的场景,例如COLLECT_SET

解决方案

使用支持对ARRAY类型的字段或表达式执行neq操作的函数,例如SIZE(ARRAY)!=0,详情请参见SIZE。或者将MaxCompute升级至最新版本。

错误10:process core dumped

错误信息

ODPS-0010000:System internal error - fuxi job failed, caused by: process core dumped

错误码描述

报错多见于对不支持ARRAY类型的字段或表达式执行neq操作的场景,例如COLLECT_SET

解决方案

使用支持对ARRAY类型的字段或表达式执行neq操作的函数,例如SIZE(ARRAY)!=0,详情请参见SIZE。或者将MaxCompute升级至最新版本。

错误11:fuxi job failed, caused by: kWorkerOutOfMemory

错误信息

ODPS-0010000:System internal error - fuxi job failed, caused by: kWorkerOutOfMemory(errCode:256) at Odps/autonavi_location_20230831212 329151gio81xoniqh_SQL_0_1_0_job_0/R2_1@68d01417.na62#4533.

Detail error msg: KILL_NAKILL_NA: plannedResource ({Memory=4096, CPU=100}) usedResource ({Memory=5751, CPU=164}).

错误码描述

  • 触发条件:从报错信息的SQL_0_1_0_job_0/R2_1中判断是Reduce阶段的R2_1部分发生OutOfMemory(OOM)。

  • 解决思路:

    • plannedResource({Memory=4096, CPU=100}为这个任务计划使用的资源信息;

    • usedResource({Memory=5751, CPU=164}为任务运行时实际需要的资源信息;

解决方案

通过set设置发生OOM阶段的Memory,针对上述报错,Reduce阶段可以做如下设置:

  • set odps.sql.reducer.memory=6144; (这个值只需要大于usedResource中的memory即可)。

  • set odps.sql.reducer.cpu=200;(这个值只需要大于usedResource中的cpu即可)。