7

boto 3を使用してハイブステップを実行することは可能ですか? AWS CLI を使用してこれを行っていますが、ドキュメント ( http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps ) から、jar のみが受け入れられるようです。 . 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 argsありmainclass、非常にBoto3 の要件に似ています。

Hive を含む EMR のすべてのジョブ フロー ステップは、JAR からインスタンス化する必要があることが判明しました。したがって、Boto3 を介して Hive のステップを実行できますが、定義を簡単に構築するためのヘルパー クラスはありません。

HiveStep以前のバージョンの Boto で使用されたアプローチを見ると、有効なジョブ フロー定義を作成できます。

または、以前のバージョンの Boto を使用するようにフォールバックすることもできます。

于 2015-09-10T12:59:07.880 に答える