如何使用 Step Function 在 Amazon EMR 中添加步骤

Posted

技术标签:

【中文标题】如何使用 Step Function 在 Amazon EMR 中添加步骤【英文标题】:How to add a Step in Amazon EMR using Step Function 【发布时间】:2021-09-16 11:21:14 【问题描述】:

我是在 AWS 中创建 Step 函数的新手。我已经创建了一个 EMR 集群并想向它添加一个步骤。我正在使用以下命令:

 "Next": "Run first step"
    ,
    "Run first step": 
      "Type": "Task",
      "Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
      "Parameters": 
        "ClusterId.$": "$.cluster.ClusterId",
        "Step": 
          "Name": "Run Data Transformation",
          "ActionOnFailure": "CONTINUE",
          "HadoopJarStep": 
            "Jar": "command-runner.jar",
            "Args": [
              "spark-submit s3://xdam-nyctaxi-emr-research/scripts/nyctaxi-tranform-task.py s3://xdam-nyctaxi-emr-research/data/nyctaxi-raw/nyc_taxi_trip_duration.csv s3://xdam-nyctaxi-emr-research/data/nyctaxi-transformed/"
            ]

检查我的 EMR 集群,step 参数应如下所示:

相反,它失败了,因为创建的步骤参数中有引号:

我怎样才能在没有引号的情况下传递参数?

【问题讨论】:

您使用哪个库或平台提交此作业/步骤? 【参考方案1】:

Args 数组中的 spark-submit 不应该是像下面这样以数组形式放入的一个长字符串。

 'Args': [
                '/usr/bin/spark-submit',
                'you_script.py'
                's3://your_path',
                's3://your_path'
  ]

您可以按顺序或按名称传递 spark-submit 命令自己的参数,提供双破折号后跟名称 (-- ) 作为值之前的前一个数组元素。

【讨论】:

以上是关于如何使用 Step Function 在 Amazon EMR 中添加步骤的主要内容,如果未能解决你的问题,请参考以下文章

如何将无服务器 Step Function/状态机/Lambda 构建嵌套到现有 AWS CloudFormation ElasticBeanstalk 应用程序中?

从 SNS 触发 Step Function

使用 tf.function() 获取形状

如何扩展 jQuery 的 animate-step 功能

Step Function 中的嵌套 Step Function:未知错误:“...未授权创建托管规则”

错误:(-215:断言失败)_step >= minstep in function 'cv::Mat::Mat'