开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文
2 条回答
写回答
取消 提交回答
  • 看报错是map join的小表超过内存限制了
    655f653c29c22ac79a13144f246472f1.png
    此回答整理自钉群“MaxCompute开发者社区1群”

    2024-05-07 12:14:42
    赞同 1 展开评论 打赏
  • 你的这个错误信息 ODPS-0123065: Join exception - Hash Join Cursor small table exceeds limitation 指的是在使用MaxCompute进行哈希连接(Hash Join)操作时遇到了问题。错误指出哈希连接中的小表(build side)使用的内存超出了限制。MaxCompute为了优化性能,会对参与连接的较小表进行全表扫描并构建哈希表,而这个过程中的内存使用不能超过预设的上限。

    在你提供的链接里错误详情提供了以下关键信息:

    • 限制大小:限制是2013265920字节。
    • 总使用内存大小:实际使用的内存总大小为2013349719字节,略微超过了限制。
    • 各哈希连接步骤的内存使用情况HashJoin1, HashJoin2, 和 HashJoin3 分别使用了大约6.7GB的内存。
    • 当前光标所在:异常发生在HashJoin3的构建阶段。
    • 项目及数据内存使用情况:Project11中,数据内存使用量为671116573字节,并给出了固定类型、字符串类型和复杂类型内存的具体使用情况。
      image.png

    解决这个问题的可能方法有: 优化数据处理逻辑:检查是否可以通过优化查询逻辑,比如预先过滤掉不必要的数据,来减少参与连接的数据量。调整分区策略:如果数据是分区存储的,确保分区裁剪有效,以减少需要加载到内存中的数据量。增加内存配额:如果业务需求允许且资源充足,尝试联系阿里云客服或通过管理控制台调整作业的内存限制。这可能涉及成本增加。改用其他连接类型:如果哈希连接因内存限制而不适用,考虑是否可以改为使用其他类型的连接,如排序合并连接(Sort Merge Join),尽管这可能会影响性能。数据倾斜处理:检查是否存在数据倾斜问题,即某一分区的数据量远大于其他分区,这可能导致单个哈希连接步骤内存使用激增。解决数据倾斜可以缓解这个问题。
    image.png

    2024-05-07 11:13:37
    赞同 展开评论 打赏

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

相关电子书

更多
大数据AI一体化的解读 立即下载
极氪大数据 Serverless 应用实践 立即下载
大数据&AI实战派 第2期 立即下载