开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

大数据计算MaxCompute spark Java任务里 为什么在生产环境下报这个错误的?

大数据计算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

展开
收起
青城山下庄文杰 2023-10-23 16:42:59 110 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在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应用程序,以确保配置参数生效。

    2023-10-23 22:00:37
    赞同 展开评论 打赏
  • spark限制。 或者update操作用SQL执行,不要用spark执行了 此回答整理自钉群“MaxCompute开发者社区1群”

    2023-10-23 18:43:36
    赞同 展开评论 打赏
  • 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信息的操作间隔至少为一分钟。

    2023-10-23 17:11:21
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    Data+AI时代大数据平台应该如何建设 立即下载
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载