代码之家  ›  专栏  ›  技术社区  ›  user2077935

AWS EMR,使用terraform提交python pyspark脚本作为步骤

  •  0
  • user2077935  · 技术社区  · 4 年前

    我已经使用terraform成功创建了一个EMR集群,根据terraform文档,它指定了如何将步骤作为jar提交到EMR https://www.terraform.io/docs/providers/aws/r/emr_cluster.html#step-1

    step {
        action_on_failure = "TERMINATE_CLUSTER"
        name              = "Setup Hadoop Debugging"
    
        hadoop_jar_step {
          jar  = "command-runner.jar"
          args = ["state-pusher-script"]
        }
      }
    

    其中缺少作为步骤添加pyspark脚本的文档。 有人有使用terraform添加pyspark脚本作为EMR步骤的经验吗?

    1 回复  |  直到 4 年前
        1
  •  0
  •   user11714757 user11714757    4 年前

    一种常见的方法是从S3复制脚本并使用 command-runner.jar 执行脚本。(我不知道这是否理想……)

      step = [
        {
          name              = "Copy script"
          action_on_failure = "CONTINUE"
    
          hadoop_jar_step {
            jar  = "command-runner.jar"
            args = ["aws", "s3", "cp", "s3://path/to/script.py", "/home/hadoop/"]
          }
        },
        {
          name              = "Run script"
          action_on_failure = "CONTINUE"
    
          hadoop_jar_step {
            jar  = "command-runner.jar"
            args = ["bash", "/home/hadoop/script.py"]
          }
        },
      ]
    
        2
  •  0
  •   Aleksey Tsalolikhin    3 年前

    以下是一个使用示例 hadoop_jar_step .

      step = [
        {
          action_on_failure = "TERMINATE_CLUSTER"
          name              = "Setup Hadoop Debugging"
    
          hadoop_jar_step = [
            {
              jar = "command-runner.jar"
              args = [
                "state-pusher-script"
              ]
              main_class = ""
              properties = {}
            }
          ]
        }
      ]
    

    包含以下解决方法 https://github.com/hashicorp/terraform-provider-aws/issues/20911

    更改 args 到你的 spark-submit 命令。