Boto3 EMR - 蜂巢步骤
Boto3 EMR - Hive step
是否可以使用 boto 3 执行配置单元步骤?我一直在使用 AWS CLI 这样做,但从文档 (http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps) 看来,似乎只接受 jars。如果可以使用 Hive 步骤,资源在哪里?
谢谢
在以前版本的 Boto 中,有一个名为 HiveStep
的助手 class,它可以轻松构建用于执行 Hive 作业的作业流步骤。但是在 Boto3 中,方法发生了变化,classes 是在 运行 时从 AWS REST API 生成的。因此,不存在这样的助手 class。查看HiveStep
的源码,https://github.com/boto/boto/blob/2d7796a625f9596cbadb7d00c0198e5ed84631ed/boto/emr/step.py可以看出这是Step
的subclass,是一个class,属性为jar
args
和 mainclass
,和Boto3中的要求非常相似。
事实证明,EMR 上的所有作业流程步骤,包括 Hive 的步骤,仍然需要从 JAR 实例化。因此,您可以通过 Boto3 执行 Hive 步骤,但没有帮助程序 class 可以轻松构建定义。
通过查看 HiveStep
在以前版本的 Boto 中使用的方法,您可以构建有效的作业流定义。
或者,您可以回退到使用以前版本的 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)
是否可以使用 boto 3 执行配置单元步骤?我一直在使用 AWS CLI 这样做,但从文档 (http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps) 看来,似乎只接受 jars。如果可以使用 Hive 步骤,资源在哪里?
谢谢
在以前版本的 Boto 中,有一个名为 HiveStep
的助手 class,它可以轻松构建用于执行 Hive 作业的作业流步骤。但是在 Boto3 中,方法发生了变化,classes 是在 运行 时从 AWS REST API 生成的。因此,不存在这样的助手 class。查看HiveStep
的源码,https://github.com/boto/boto/blob/2d7796a625f9596cbadb7d00c0198e5ed84631ed/boto/emr/step.py可以看出这是Step
的subclass,是一个class,属性为jar
args
和 mainclass
,和Boto3中的要求非常相似。
事实证明,EMR 上的所有作业流程步骤,包括 Hive 的步骤,仍然需要从 JAR 实例化。因此,您可以通过 Boto3 执行 Hive 步骤,但没有帮助程序 class 可以轻松构建定义。
通过查看 HiveStep
在以前版本的 Boto 中使用的方法,您可以构建有效的作业流定义。
或者,您可以回退到使用以前版本的 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)