为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 AWS SDK for Go 创建 EMR 集群

如何使用 AWS SDK for Go 创建 EMR 集群

Go
守候你守候我 2021-12-27 15:59:41
我想使用 AWS SDK for Go 创建 EMR 集群,但在官方文档中找不到方法。包:emr — 适用于 Go 的 AWS 开发工具包你能帮我提供一个详细的代码吗?
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

实际上,遇到同样的问题,文档中描述了一种方法。对我来说,这也不简单,因为措辞不同。似乎“运行作业流”基本上等于创建集群并向其添加步骤。


所以你想要的是在这里找到的RunJobFlow函数:


https://docs.aws.amazon.com/sdk-for-go/api/service/emr/EMR.html#RunJobFlow-instance_method


因此,一个无需步骤即可创建集群的简单代码示例如下(确保您配置了正确的凭据):


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("eu-west-1")})

    svc := emr.New(sess)


    params := &emr.RunJobFlowInput{

        Instances: &emr.JobFlowInstancesConfig{ // Required

            Ec2KeyName:                    aws.String("keyname"),

            HadoopVersion:                 aws.String("2.7.2"),

            InstanceCount:                 aws.Int64(1),

            KeepJobFlowAliveWhenNoSteps: aws.Bool(true),

            MasterInstanceType:          aws.String("m1.medium"),

            Placement: &emr.PlacementType{

                AvailabilityZone: aws.String("eu-west-1a"), // Required

            },

            TerminationProtected:       aws.Bool(true),

        },

        Name:           aws.String("Go Test Cluster"), // Required

        Applications: []*emr.Application{

            { // Required

                Name:    aws.String("Ganglia"),

            },

            { 

                Name: aws.String("Spark"),

            },

            // More values...

        },

        JobFlowRole: aws.String("EMR_EC2_DefaultRole"),

        LogUri:      aws.String("s3://aws-logs-0000000000-eu-west-1/elasticmapreduce/"),

        ReleaseLabel: aws.String("emr-4.6.0"),

        ServiceRole:  aws.String("EMR_DefaultRole"),

        VisibleToAllUsers: aws.Bool(true),

    }

    resp, err := svc.RunJobFlow(params)


    if err != nil {

        // Print the error, cast err to awserr.Error to get the Code and

        // Message from an error.

        fmt.Println(err.Error())

        return

    }


    // Pretty-print the response data.

    fmt.Println(resp)

}


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号