2015-09-05 58 views

回答

3

在以前版本的Boto,有一個名叫HiveStep一個輔助類,這使得它易於構建用於執行蜂巢作業的作業流程的步驟。但是,在Boto3中,該方法已更改,並且類在運行時從AWS REST API生成。因此,不存在這樣的輔助類。查看HiveStep,https://github.com/boto/boto/blob/2d7796a625f9596cbadb7d00c0198e5ed84631ed/boto/emr/step.py的源代碼,可以看出這是Step的一個子類,它是屬性爲jarargsmainclass的類,與Boto3中的需求非常相似。

事實證明,EMR上的所有作業流程步驟(包括Hive)仍然需要從JAR實例化。因此,您可以通過Boto3執行Hive步驟,但沒有助手類可以輕鬆構建定義。

通過查看以前版本Boto中HiveStep所使用的方法,您可以構建一個有效的作業流程定義。

或者,您可以重新使用Boto以前的版本。

+0

什麼是使用Boto3蜂房步驟的例子嗎?我似乎無法找到任何示例或指針。我寧願使用最新版本標籤(4.0)。 – intl

+0

不確定4.0版本標籤是什麼意思? – mattinbits

+0

這是最新的emr 4.0版本。它作爲CLI的參數傳遞。 – intl

3

我能得到這個使用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)