使用boto 3可以執行蜂巢步驟嗎?我一直在使用AWS CLI,但從文檔(http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps),似乎只接受罐子。如果Hive步驟可行,資源在哪裏?Boto3 EMR - 蜂巢步驟
感謝
使用boto 3可以執行蜂巢步驟嗎?我一直在使用AWS CLI,但從文檔(http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps),似乎只接受罐子。如果Hive步驟可行,資源在哪裏?Boto3 EMR - 蜂巢步驟
感謝
在以前版本的Boto,有一個名叫HiveStep
一個輔助類,這使得它易於構建用於執行蜂巢作業的作業流程的步驟。但是,在Boto3中,該方法已更改,並且類在運行時從AWS REST API生成。因此,不存在這樣的輔助類。查看HiveStep
,https://github.com/boto/boto/blob/2d7796a625f9596cbadb7d00c0198e5ed84631ed/boto/emr/step.py的源代碼,可以看出這是Step
的一個子類,它是屬性爲jar
args
和mainclass
的類,與Boto3中的需求非常相似。
事實證明,EMR上的所有作業流程步驟(包括Hive)仍然需要從JAR實例化。因此,您可以通過Boto3執行Hive步驟,但沒有助手類可以輕鬆構建定義。
通過查看以前版本Boto中HiveStep
所使用的方法,您可以構建一個有效的作業流程定義。
或者,您可以重新使用Boto以前的版本。
我能得到這個使用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)
什麼是使用Boto3蜂房步驟的例子嗎?我似乎無法找到任何示例或指針。我寧願使用最新版本標籤(4.0)。 – intl
不確定4.0版本標籤是什麼意思? – mattinbits
這是最新的emr 4.0版本。它作爲CLI的參數傳遞。 – intl