【问题标题】:What is the correct way to use the AddJobFlowStep in the AWS EMR sdk?在 AWS EMR sdk 中使用 AddJobFlowStep 的正确方法是什么?
【发布时间】:2017-08-12 21:36:54
【问题描述】:

我已经使用 go AWS sdk 创建了一个集群并向其中添加了一个作业流程步骤。 但是,当我以编程方式执行该步骤时,该步骤的执行总是失败。 需要注意的一个有趣点是,当我从 UI 附加 jar 时,它会成功执行。

因此,当从 UI 附加 jar 时,这是步骤执行的结果(它成功运行并进入 COMPLETED 状态): (复制全文)

JAR 位置:command-runner.jar 主类:无参数: spark-submit --deploy-mode cluster --class 你好 s3://mdv-testing/Util-assembly-1.0.jar 失败的操作:继续

但是,当我以编程方式尝试时,这是该步骤的输出:

状态:失败原因:未找到主类。 日志文件:s3://mdv-testing/awsLogs/j-3RW9K14BS6GLO/steps/s-337M25MLV3BHT/stderr.gz 详细信息:引起:java.lang.ClassNotFoundException:scala.reflect.api.TypeCreator JAR 位置:s3://mdv-testing/Util-assembly-1.0.jar 主类:无 > 参数:spark-submit "--class Hello" 失败时的操作:取消并等待

我尝试了各种参数组合,并意识到 command-runner.jar 从未出现。 我相应地对代码进行了更改,现在将 command-runner.jar 作为参数发送。这现在反映了与成功执行的步骤相同的详细信息。 这是修改后的输出:

状态:失败原因:未知错误。 日志文件:s3://mdv-testing/awsLogs/j-3RW9K14BS6GLO/steps/s-3NI5ZO15VTWQK/ JAR 位置:command-runner.jar 主要课程:无 参数:“spark-submit --deploy-mode cluster --class 你好 s3://mdv-testing/Util-assembly-1.0.jar 失败时的操作:取消并等待

转码

package main
import (
"fmt"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/emr"
)

func main() {
sess := session.New(&aws.Config{Region: aws.String("us-east-1")})
svc := emr.New(sess)

params := &emr.AddJobFlowStepsInput{
JobFlowId: aws.String("j-3RW9K14BS6aaa"),
Steps: []*emr.StepConfig{
{
    ActionOnFailure: aws.String("CANCEL_AND_WAIT"), //TERMINATE_CLUSTER"),
    HadoopJarStep: &emr.HadoopJarStepConfig{
    Args: []*string{
                     aws.String("spark-submit --deploy-mode cluster --class Hello s3://mdv-testing/Util-assembly-1.0.jar"),
                   },
                     Jar: aws.String("command-runner.jar"), },
                     Name: aws.String("ReportJarExecution"),
    },
},
}

resp, err := svc.AddJobFlowSteps(params)

if err != nil {
// Print the error, cast err to awserr. sError to get the Code and
// Message from an error.
fmt.Println(err.Error())
return
}

// Pretty-print the response data.
fmt.Println(resp)
}

谁能帮帮我!!!我想我已经很接近解决方案了,但它正在逃避我的大部分时间:(

【问题讨论】:

    标签: scala go jar emr


    【解决方案1】:

    我设法解决了这个问题。 对于遇到类似问题的任何人,答案是我们需要在数组中单独发送参数。

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 1970-01-01
      相关资源
      最近更新 更多