7

是否可以使用 boto 3 执行蜂巢步骤?我一直在使用 AWS CLI 这样做,但从文档(http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps)看来,似乎只接受 jars . 如果 Hive 步骤可行,那么资源在哪里?

谢谢

4

2 回答 2

4

我能够使用 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)
于 2016-05-18T20:25:06.667 回答
3

在以前的 Boto 版本中,有一个名为的帮助程序类HiveStep,它可以轻松构建用于执行 Hive 作业的作业流程步骤。但是在 Boto3 中,方法发生了变化,并且类是在运行时从 AWS REST API 生成的。因此,不存在这样的辅助类。看源码HiveStephttps://github.com/boto/boto/blob/2d7796a625f9596cbadb7d00c0198e5ed84631ed/boto/emr/step.py可以看出这是一个子类Step,是一个有属性的类jar argsmainclass非常类似于 Boto3 中的要求。

事实证明,EMR 上的所有作业流程步骤,包括 Hive 步骤,仍然需要从 JAR 中实例化。因此,您可以通过 Boto3 执行 Hive 步骤,但没有帮助类来轻松构建定义。

通过查看HiveStep以前版本的 Boto 中使用的方法,您可以构建一个有效的工作流定义。

或者,您可以回退到使用以前版本的 Boto。

于 2015-09-10T12:59:07.880 回答