使用boto 3可以执行蜂巢步骤吗?我一直在使用AWS,但从docs (steps)来看,似乎只有jars被接受。如果蜂巢步骤是可能的,那么资源在哪里?
谢谢
发布于 2015-09-10 12:59:07
在以前版本的Boto中,有一个名为HiveStep的助手类,它使构造用于执行Hive作业的作业流步骤变得容易。然而,在Boto3中,方法已经改变,类是在运行时从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。
发布于 2016-05-18 20:25:06
我能够使用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)https://stackoverflow.com/questions/32410325
复制相似问题