开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

咨询下DataWorks这个问题是如何产生的,该如何解决?

FAILED: ODPS-0010000:System internal error - fuxi job failed, caused by: String length 9165320 is larger than maximum 8388608,咨询下DataWorks这个问题是如何产生的,该如何解决?开发环境上运行相同的代码没有问题

展开
收起
真的很搞笑 2023-11-12 08:43:39 261 0
2 条回答
写回答
取消 提交回答
  • session级别设置set odps.sql.cfiles.field.maxsize=16384,默认8m不建议设置太大,会导致内存溢出。
    setproject odps.sql.cfile2.field.maxsize=16384; 这个flag是用来项目级别限制每列字符串类型最大能写入的长度,单位为KB,默认8192(也就是8M),最大值262144。需要说明的是,String size在极端比较大的场景下,会有OOM问题的风险,所以是不建议设置比较大的值,目前设置到16384,是相对可控的,此回答整理自钉群“DataWorks0群已满,新群请看群公告”

    2023-11-12 16:36:51
    赞同 展开评论 打赏
  • 这个问题看起来是在使用阿里云的DataWorks进行数据操作时出现的,具体是在进行ODPS(开放数据处理服务)的操作时出现了错误。错误代码ODPS-0010000提示了一个系统内部错误,而后面的错误信息String length 9165320 is larger than maximum 8388608则明确指出了字符串的长度超过了最大允许的长度8388608。

    这个问题的产生可能是由于你正在尝试上传或处理的数据中存在某些字符串字段的长度超过了ODPS的限制。ODPS为了限制单个记录的大小,对字符串字段的长度做了限制,这个限制是8MB(8388608字节)。

    解决这个问题的方法主要有两种:

    1. 修改数据源:如果你可以控制数据源,那么你可以尝试将字符串字段的长度限制在8MB以下。这可能需要你重新设计数据结构或者修改数据生成过程。
    2. 在代码中进行分割:如果你不能控制数据源,那么你可以在代码中处理这种情况。例如,你可以检查每个字符串字段的长度,如果超过限制,就将其分割成多个字段。这可能需要你修改代码来处理这种情况。

    在选择解决方案时,你需要考虑到哪种方法更符合你的实际情况和需求。如果数据量不大,或者你有足够的时间和资源来处理这个问题,那么你可以选择第一种方法。如果数据量很大,或者你需要尽快上线,那么你可能需要选择第二种方法。

    2023-11-12 09:00:52
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载