You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS DataPipeline创建私有EMR集群如何跳过Install Task Runner步骤

首先说明软链接报错的根因:EMR 6.2.0的Hive lib目录自带opencsv-2.3.jar和opencsv-3.9.jar两个版本的包,官方TaskRunner安装脚本用find查找opencsv包时返回了两个结果,直接传入软链接命令后,多个源文件要求目标必须为目录,但脚本指定的目标是单个文件,因此触发报错。

解决方案

方案1:彻底跳过Install TaskRunner步骤(推荐)

你当前使用的ShellCommandActivity类型会触发DataPipeline默认逻辑,自动向EMR注入TaskRunner安装步骤,将活动类型替换为EmrActivity即可跳过该逻辑,直接向EMR提交自定义步骤,无需TaskRunner介入。
修改后的配置参考:

{
      "name": "DefaultEmrActivity1",
      "maximumRetries" : 0,
      "runsOn": {
        "ref": "EmrClusterId_lKm9y"
      },
      "id": "EmrActivityId_SRjHg",
      "type": "EmrActivity",
      "step": "spark-submit --deploy-mode cluster --conf spark.yarn.submit.waitAppCompletion=true --py-files s3://emr/script.py"
    }

仅需将原配置中的type改为EmrActivity,command字段替换为step即可,DataPipeline会直接将命令作为EMR步骤提交,不会触发TaskRunner安装流程。

方案2:修复TaskRunner安装逻辑(必须保留ShellCommandActivity时使用)

如果因业务逻辑无法更换活动类型,可以通过以下配置解决问题:

  • 在你已配置的引导操作中提前删除一个opencsv版本,比如执行rm -f /usr/lib/hive/lib/opencsv-2.3.jar,确保find命令仅返回一个结果,软链接命令即可正常执行
  • 将安装脚本需要下载的TaskRunner-1.0.zip、mysql-connector-java-bin.jar、csv-serde.jar提前上传到你的私有S3桶,配置活动参数时指定这三个资源的私有S3路径,避免公网访问:
    • 新增--zipFile参数,值为你私有桶中TaskRunner压缩包的S3路径
    • 新增--mysqlFile参数,值为你私有桶中mysql连接器的S3路径
    • 新增--hiveCsvSerdeFile参数,值为你私有桶中csv-serde包的S3路径

私有集群适配补充

  • 提前为VPC配置S3、DataPipeline的内网端点,确保集群无需公网即可访问这两个服务
  • 调试阶段将EMR失败动作改为保留集群,方便登录排查问题,验证通过后再调整为终止即可。

内容的提问来源于stack exchange,提问作者vll1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 03:27:05