2015-09-05 13 views

risposta

3

Nella versione precedente di Boto, c'era una classe di supporto di nome HiveStep che ha reso facile per la costruzione del passaggio del flusso un lavoro per l'esecuzione di un lavoro Hive. Tuttavia in Boto3, l'approccio è cambiato e le classi vengono generate in fase di esecuzione dall'API REST di AWS. Di conseguenza, nessuna classe di helper esiste. Guardando il codice sorgente di HiveStep, https://github.com/boto/boto/blob/2d7796a625f9596cbadb7d00c0198e5ed84631ed/boto/emr/step.py si può vedere che questa è una sottoclasse di Step, che è una classe con proprietà jarargs e mainclass, molto simile ai requirments in Boto3.

Si scopre che tutti i passaggi del flusso di lavoro su EMR, compresi quelli Hive, devono ancora essere istanziati da un JAR. Pertanto è possibile eseguire passaggi Hive tramite Boto3, ma non esiste una classe helper per semplificare la costruzione della definizione.

Osservando l'approccio utilizzato da HiveStep nella versione precedente di Boto, è possibile creare una definizione di flusso di lavoro valida.

Oppure, potresti ricorrere all'utilizzo della versione precedente di Boto.

+0

quello che sarebbe un esempio di un passo alveare utilizzando Boto3? Non riesco a trovare esempi o indicazioni di sorta. Preferirei usare l'ultima etichetta di rilascio (4.0). – intl

+0

Non sei sicuro di cosa intendi con l'etichetta di rilascio 4.0? – mattinbits

+0

È l'ultima versione di emr 4.0. È passato come argomento dalla CLI. – intl

3

sono stato in grado di ottenere questo lavoro utilizzando Boto3:

# First create your hive command line arguments 
hive_args = "hive -v -f s3://user/hadoop/hive.hql" 

# Split the hive args to a list 
hive_args_list = hive_args.split() 

# Initialize your Hive Step 
hiveEmrStep=[ 
     { 
      'Name': 'Hive_EMR_Step', 
      'ActionOnFailure': 'CONTINUE', 
      'HadoopJarStep': { 
       'Jar': 'command-runner.jar', 
       'Args': hive_args_list 
      } 
     }, 
    ] 

# Create Boto3 session and client 
session = boto3.Session(region_name=AWS_REGION,profile_name=AWS_PROFILE) 
client = session.client('emr') 

# Submit and execute EMR Step 
client.add_job_flow_steps(JobFlowId=cluster_id,Steps=hiveEmrStep) 

#Where cluster_id is the ID of your cluster from AWS EMR (ex: j-2GS7xxxxxx)