amazon-web-services - 如何使用 AWS SDK for Go 创建 EMR 集群

标签 amazon-web-services go elastic-map-reduce

我想使用AWS SDK for Go创建EMR集群,但在官方文档中找不到方法。

Package: emr — AWS SDK for Go

您能帮我提供详细的代码吗?

最佳答案

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

所以你想要的是在这里找到的函数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)
}

关于amazon-web-services - 如何使用 AWS SDK for Go 创建 EMR 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36196875/

相关文章:

amazon-web-services - 使用 API 代替 SDK 可以吗?

go - slice 与类型别名作为方法接收器

hadoop - Amazon Elastic Map Reduce 是否在每个实例中运行一个或多个映射器进程?

ios - 在 Alamofire POST 请求中发送一个数组作为参数

amazon-web-services - AWS中各种成本估算工具的区别

amazon-web-services - AWS SES 服务用于使用 java 发送邮件

go - 观察循环内的无效值

json - 我被 json.marshal 困住了

java - 快速访问大型数据集(5 GB)键值存储的最佳方法

hadoop - AWS S3上的HBase HFile损坏