大数据计算MaxCompute中pyspark执行任务报错?[阿里云MaxCompute]

大数据计算MaxCompute中pyspark执行任务报错:Caused by: java.lang.Exception: com.aliyun.odps.cupid.CupidException: ODPS-0720301: Too many job input – too many map input, must be <= 4096,该如何配置max map input呢?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 这个错误是由于在MaxCompute中,每个任务的输入数据量超过了限制(默认为4096个map input)。要解决这个问题,你可以尝试以下方法:

    1. 减少任务的输入数据量。检查你的代码和数据,确保每个任务的输入数据量不超过4096个map input的限制。

    2. 增加MaxCompute的每个任务的最大输入数据量。你可以联系阿里云技术支持,申请提高每个任务的最大输入数据量。

    3. 将多个小任务合并成一个大任务。这样可以减少每个任务的输入数据量,从而避免超过限制。但是请注意,这可能会影响任务的性能和执行时间。

  2. 这个问题是因为你的Spark作业中的map任务的输入数量超过了MaxCompute的限制(默认限制为4096)。你可以通过以下步骤来解决这个问题:

    1. 在你的Spark作业的代码中,找到所有的flatMapmap或者filter操作,这些操作都会创建一个新的map任务。

    2. 对于每个flatMapmap或者filter操作,检查其输入的数量。如果输入的数量超过4096,你需要优化你的代码,减少每个map任务的输入数量。

    3. 如果无法减少每个map任务的输入数量,你可以在MaxCompute的控制台中增加max_map_input的值。具体操作如下:

      • 登录到MaxCompute的控制台。
      • 选择你的Project。
      • 点击”资源管理”选项卡。
      • 在左侧菜单中选择”参数设置”。
      • 在”参数设置”页面中,找到”max_map_input”参数,并将其值增加到你想要的数值。
  3. 应该是map worker的输入数据量。
    设置这个set odps.stage.mapper.split.size=4096;,此回答整理自钉群“MaxCompute开发者社区2群”