gpt4 book ai didi

scala - 在 AWS EMR SDK 中使用 AddJobFlowStep 的正确方法是什么?

转载 作者:IT王子 更新时间:2023-10-29 02:22:09 26 4
gpt4 key购买 nike

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

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

JAR location : command-runner.jar Main class : None Arguments : spark-submit --deploy-mode cluster --class Hello s3://mdv-testing/Util-assembly-1.0.jar Action on failure: Continue

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

Status :FAILED Reason : Main Class not found. Log File : s3://mdv-testing/awsLogs/j-3RW9K14BS6GLO/steps/s-337M25MLV3BHT/stderr.gz Details : Caused by: java.lang.ClassNotFoundException: scala.reflect.api.TypeCreator JAR location : s3://mdv-testing/Util-assembly-1.0.jar Main class : None > Arguments : spark-submit "--class Hello" Action on failure: Cancel and wait

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

Status :FAILED Reason : Unknown Error. Log File : s3://mdv-testing/awsLogs/j-3RW9K14BS6GLO/steps/s-3NI5ZO15VTWQK/ JAR location : command-runner.jar Main class : None Arguments : "spark-submit --deploy-mode cluster --class Hello s3://mdv-testing/Util-assembly-1.0.jar Action on failure: Cancel and wait

去代码

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 - 在 AWS EMR SDK 中使用 AddJobFlowStep 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com