boto 3を使用してハイブステップを実行することは可能ですか? AWS CLI を使用してこれを行っていますが、ドキュメント ( http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps ) から、jar のみが受け入れられるようです。 . Hive の手順が可能な場合、リソースはどこにありますか?
ありがとう
boto 3を使用してハイブステップを実行することは可能ですか? AWS CLI を使用してこれを行っていますが、ドキュメント ( http://boto3.readthedocs.org/en/latest/reference/services/emr.html#EMR.Client.add_job_flow_steps ) から、jar のみが受け入れられるようです。 . 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 の要件に似ています。
Hive を含む EMR のすべてのジョブ フロー ステップは、JAR からインスタンス化する必要があることが判明しました。したがって、Boto3 を介して Hive のステップを実行できますが、定義を簡単に構築するためのヘルパー クラスはありません。
HiveStep
以前のバージョンの Boto で使用されたアプローチを見ると、有効なジョブ フロー定義を作成できます。
または、以前のバージョンの Boto を使用するようにフォールバックすることもできます。