使用 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 集群
谢谢
我有一个接受一些参数的 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 集群 谢谢