使用PowerShell Cmdlet的AWS EMR作业

时间:2017-08-09 14:59:31

标签: powershell amazon-web-services emr amazon-emr

我有一个接受一些论点的猪脚本。我只需要使用AWS PowerShell Cmdlet。 我可以使用以下命令创建使用pig安装的集群:

$app = New-Object  Amazon.ElasticMapReduce.Model.Application
$app.Name="Pig"
$jobid = Start-EMRJobFlow -Name "Pig Job"  -Application $app -Instances_MasterInstanceType "m3.xlarge" -Instances_KeepJobFlowAliveWhenNoSteps $true -Instances_InstanceCount 1 -LogUri "s3://mybucket/logs" -VisibleToAllUsers $true -ReleaseLabel "emr-5.7.0" -SecurityConfiguration "my-sec-grp" -JobFlowRole "EMR_EC2_DefaultRole" -ServiceRole "EMR_DefaultRole"

但我无法为猪工作添加步骤。 我关注了一些文章,但那些文章已经很老了,或者那些正在使用一些自定义jar来提交作业。我只需要提交一个接受一些参数的猪脚本。 任何帮助将受到高度赞赏 注意:我需要PowerShell特定的命令。我可以使用AWS cli执行此操作。

1 个答案:

答案 0 :(得分:0)

我找到了从powershell提交pig脚本的方法。我正在关注这个link。但问题在于其关于Hive脚本。所以创建步骤的步骤为

$runhivescriptargs = @("s3://us-east-1.elasticmapreduce/libs/hive/hive-script", `
         "--base-path", "s3://us-east-1.elasticmapreduce/libs/hive", `
         "--hive-versions","latest", `
         "--run-hive-script", `
         "--args", `
         "-f", "s3://elasticmapreduce/samples/hive-ads/libs/join-clicks-to-impressions.q", `
         "-d", "SAMPLE=s3://elasticmapreduce/samples/hive-ads",`
         "-d", "DAY=2009-04-13", `
         "-d", "HOUR=08", `
         "-d", "NEXT_DAY=2009-04-13", `
         "-d", "NEXT_HOUR=09",`
         "-d", "INPUT=s3://elasticmapreduce/samples/hive-ads/tables", `
         "-d", "OUTPUT=s3://my-output-bucket/joinclick1", `
         "-d", "LIB=s3://elasticmapreduce/samples/hive-ads/libs")

所以我遵循相同的步骤,但不管怎样,在猪脚本的情况下,需要使用-p选项传递参数而不使用-d选项 所以我的步骤创建就像:

$runpigscriptargs = @("s3://us-east-1.elasticmapreduce/libs/pig/pig-script", `
         "--base-path", "s3://us-east-1.elasticmapreduce/libs/pig", `
         "--run-pig-script", `
         "--args", `
         "-f", $scriptfile, `
         "-p", "Id=$Id",`
         "-p", "jarPath=$jarPath",`
         "-p", "inputPath=$newInputPath", `
         "-p", "outputPath=$outputPath")

我没有指定猪版本,因为我已经创建了一个安装了最新版本猪的EMR集群 感谢