大数据计算MaxCompute spark Java任务里 为什么在生产环境下报这个错误的?而在本地运行,冒烟测试都是没问题的, 这个怎么解决的?
ERROR org.apache.spark.deploy.yarn.ApplicationMaster - User class threw exception: java.lang.Exception: com.aliyun.odps.cupid.CupidException: Failed to do DDL Task. FailureMessage: ODPS-0110061: Failed to run ddltask - enforce set user transaction context but not found, planType:INSERT_INTO_PARTITION
在MaxCompute的Spark Java任务中,如果在生产环境下报出“ODPS-0110061: Failed to run ddltask - enforce set user transaction context but not found, planType:INSERT_INTO_PARTITION”错误,而本地运行和冒烟测试都没有问题,那么可能是由于MaxCompute的用户配置或者环境设置不同导致的。
具体来说,这个错误可能是由于MaxCompute的用户配置中没有设置正确的事务隔离级别导致的。在MaxCompute中,事务隔离级别可以设置为读未提交、读已提交、可重复读和串行化等四种级别。如果您在生产环境下使用的是串行化事务隔离级别,而本地运行和冒烟测试使用的是其他事务隔离级别,那么可能会导致事务处理异常。
为了解决这个问题,您可以在MaxCompute的用户配置中设置正确的事务隔离级别。具体来说,您可以在MaxCompute的配置文件中设置“spark.sql.session.timeZone”和“spark.sql.hive.convertMetastoreParquet”等配置参数,然后重启Spark应用程序,以确保配置参数生效。
spark限制。 或者update操作用SQL执行,不要用spark执行了 此回答整理自钉群“MaxCompute开发者社区1群”
ODPS-0110061 https://help.aliyun.com/zh/maxcompute/user-guide/odps-0110061?spm=a2c4g.11186623.0.i57
错误码:ODPS-0110061: Failed to run ddltask
错误1:Schema evolution DDLs is not enabled in current project:xxxx
错误信息
FAILED: Catalog Service Failed, ErrorCode: 152, Error Message: ODPS-0110061: Failed to run ddltask-Schema evolution DDLs is not enabled in current project:xxxx
错误码描述
当前项目默认不允许表结构变更(Schema Evolution),如新增struct类型的子列、删除列、修改列顺序和更改列数据类型。
解决方案
若您需要开通表结构变更(Schema Evolution),请运行setproject odps.schema.evolution.enable=true;命令,需要等待10分钟后才会生效,更多表结构变更点击参考分区和列操作。
错误2:ODPS-0110061: Failed to run ddltask - Modify DDL meta encounter exception
错误信息
ODPS-0110061: Failed to run ddltask - Modify DDL meta encounter exception : ODPS-0429311:Transaction aborted - MaxC Transaction aborted. Can't update ObjectId(objectType:PARTITION, dbName:mc_gjpt, tableName:xxxx, tableId:xxx, partitionId:xxxx, partitionName:pt=20221125, tenantId:, catalogName:xxx, catalogId:xxx, dbId:, projectName:xxx). BeginTs is less than lastCommitTs.objectId:ObjectId(objectType:PARTITION, dbName:xxx, tableName:xxxx, tableId:xxx, partitionId:xxx, partitionName:pt=20221125, tenantId:, catalogName:xxxx, catalogId:xxx, dbId:, projectName:xxxx), txnId:xxxxx, lastCommitTs:1709410212584448, lastMaxBeginTs:1709410182400000, isolation:NONSTRICT_SNAPSHOT_ISOLATION, op:UPDATE, isConstraintNotAllowInsertIntoReorder:false
错误码描述
用户在短时间内对Meta信息进行变更,导致Meta冲突报错。
解决方案
避免短时间内并发去更新Meta信息,建议更新Meta信息的操作间隔至少为一分钟。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。