是否可以使用 boto 3 执行蜂巢步骤?我一直在使用 AWS CLI 这样做,但从文档(http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps)看来,似乎只接受 jars . 如果 Hive 步骤可行,那么资源在哪里?
谢谢
是否可以使用 boto 3 执行蜂巢步骤?我一直在使用 AWS CLI 这样做,但从文档(http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps)看来,似乎只接受 jars . 如果 Hive 步骤可行,那么资源在哪里?
谢谢
我能够使用 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)
在以前的 Boto 版本中,有一个名为的帮助程序类HiveStep
,它可以轻松构建用于执行 Hive 作业的作业流程步骤。但是在 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 步骤,但没有帮助类来轻松构建定义。
通过查看HiveStep
以前版本的 Boto 中使用的方法,您可以构建一个有效的工作流定义。
或者,您可以回退到使用以前版本的 Boto。