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

如何在AWS EMR集群中运行Python脚本以替代Java Jar应用

在AWS EMR上运行Python脚本替代Java Jar的方法

嘿,我来帮你搞定在AWS EMR上运行Python脚本的事儿!你之前用HadoopJarStepConfig跑Java Jar的思路没问题,换成Python的话,得用EMR专门的Script Runner工具,对应的配置类是ScriptRunnerStepConfig,我给你一步步讲清楚怎么弄:

核心思路

EMR的Script Runner是一个预安装的Jar包,专门用来运行shell、Python这类非Java的脚本。你只需要把Python脚本上传到S3,然后通过ScriptRunnerStepConfig指定脚本路径和参数即可。

具体代码实现

对比你之前的Java Jar代码,替换后的Python脚本运行配置如下:

原Java Jar运行代码

HadoopJarStepConfig runExampleConfig = new HadoopJarStepConfig()
    .withJar(jar_name)
    .withArgs(main_arguments);

替换为Python脚本的代码

// 1. 指定EMR自带的Script Runner Jar路径(固定路径,无需自己上传)
String scriptRunnerJar = "s3://elasticmapreduce/libs/script-runner/script-runner.jar";

// 2. 创建ScriptRunnerStepConfig,配置Python脚本路径和参数
// 第一个参数必须是你的Python脚本在S3的完整路径,后面是脚本需要的运行参数
ScriptRunnerStepConfig runPythonScriptConfig = new ScriptRunnerStepConfig()
    .withJar(scriptRunnerJar)
    .withArgs(
        "s3://your-bucket/path/to/your/script.py",
        "your-first-argument",
        "your-second-argument"
    );

// 3. 将配置转为StepConfig,添加到EMR集群的步骤列表中
StepConfig pythonScriptStep = new StepConfig()
    .withName("Execute Python Script")
    .withActionOnFailure(ActionOnFailure.CONTINUE) // 可根据需求调整失败后的动作(比如TERMINATE_CLUSTER)
    .withHadoopJarStep(runPythonScriptConfig);

关键注意事项

  • 脚本存储位置:必须把Python脚本上传到S3,EMR集群的节点需要能访问这个S3路径,请确保集群的IAM角色有s3:GetObject权限。
  • 依赖包安装:如果你的Python脚本需要额外的第三方库(比如pandas、numpy),可以通过Bootstrap Action在集群启动时安装。示例Bootstrap脚本如下(上传到S3后添加到集群配置):
    #!/bin/bash
    # 安装Python3依赖
    sudo pip3 install pandas numpy
    
  • PySpark脚本特殊处理:如果是运行PySpark脚本,你可以直接用SparkSubmitStepConfig来提交,示例代码如下:
    SparkSubmitStepConfig pySparkStepConfig = new SparkSubmitStepConfig()
        .withMaster("yarn")
        .withDeployMode("cluster")
        .withAppResource("s3://your-bucket/path/to/your/pyspark_script.py")
        .withArgs("arg1", "arg2");
    
    StepConfig pySparkStep = new StepConfig()
        .withName("Run PySpark Script")
        .withActionOnFailure(ActionOnFailure.CONTINUE)
        .withHadoopJarStep(new HadoopJarStepConfig(pySparkStepConfig));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:22:10