2016-03-24 7 views

Antwort

2

Eigentlich kommt auf das gleiche Problem, gibt es einen Weg, der in der Dokumentation beschrieben wird. Für mich war es auch nicht einfach, weil die Formulierung anders ist. Es scheint, dass das "Ausführen eines Jobflusses" im Grunde dem Erstellen eines Clusters und dem Hinzufügen von Schritten entspricht.

Also, was Sie wollen, ist die Funktion RunJobFlow hier:

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

So ein einfaches Codebeispiel, das ohne Schritte, um einen Cluster erstellt, ist der folgende (stellen Sie sicher, dass Sie die richtigen Anmeldeinformationen konfiguriert haben) :

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) 
} 
Verwandte Themen