使用 PowerShell Cmdlet 的 AWS EMR 作业

AWS EMR job using PowerShell Cmdlet

我有一个接受一些参数的 pig 脚本。我只需要使用 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"

但是我无法为 Pig 作业添加步骤。 我关注了一些文章,但那些文章很旧,或者那些正在使用一些自定义 jar 来提交作业。我只需要提交一个接受一些参数的猪脚本。 任何帮助将不胜感激 注意:我需要 powershell 特定的命令。我可以使用 AWS cli 执行此操作。

我得到了从 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")

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