使用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