如何在 Pig 中使用 MapReduce Native 传递命令行参数

Posted

技术标签:

【中文标题】如何在 Pig 中使用 MapReduce Native 传递命令行参数【英文标题】:How To Pass CommandLine Argument Using MapReduce Native in Pig 【发布时间】:2015-09-14 11:44:04 【问题描述】:

我正在使用 NaativeMapreduce (https://wiki.apache.org/pig/NativeMapReduce) 从 Apache Pig 调用 Mapreduce 作业

我的问题是如何像在命令行中那样传递参数。

例如:如果我有一个 Mapreduce 类,我从命令行调用它的驱动程序并传递给它一些在其作业配置对象中设置的参数,例如

java MRDriver argument1_value

在 MRDriver 中

public static void main(String[] args) 
   JobConf jobConf = ...
   jobconf.set("argument1",arg[0]);
   .....

 

当我从 Pig 调用 Mapreduce 时,我想做同样的事情

例如:

  A = load 'WordcountInput.txt';
  B = MAPREDUCE wordcount.jar Store A into 'inputDir' Load 'outputDir' as (word:chararray, count: int) `org.myorg.WordCount inputDir outputDir`;

如何使用 Pig 的 Native Mapreduce 传递要在作业配置中设置的参数。

如果对我的问题有更多澄清,请询问我。

在此先感谢 :) 干杯!!!

【问题讨论】:

【参考方案1】:

我得到了答案,在社区中分享,以便其他人也可以参考。

在下面的代码中

X = ... ;
Y = MAPREDUCE 'mymr.jar' [('other.jar', ...)] STORE X INTO 'inputLocation' USING storeFunc LOAD 'outputLocation' USING loadFunc AS schema [`params, ... `];

我们可以在上面的“[params, ...]”部分传递参数

例如:

Y = MAPREDUCE 'mymr.jar' [('other.jar', ...)] STORE X INTO 'inputLocation' USING storeFunc LOAD 'outputLocation' USING loadFunc AS schema inputpath outpath argument1 argument 2;

这里我们传递 3 个参数 - inputpath、outpath 和 argument1

默认情况下,它从输入路径中选择输入并将输出转储到输出路径中

【讨论】:

以上是关于如何在 Pig 中使用 MapReduce Native 传递命令行参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Amazon GUI 的情况下在 Elastic MapReduce 上自动运行 Pig Batch 作业?

使用 mapreduce 解析 twitter json:Java、Pig

PIG 脚本、Hive 查询和相应 MapReduce 代码的包装代码

Pig 不在 mapreduce 模式下工作

Pig 在本地模式与 mapreduce 模式下的性能

在 CDH4 集群上运行 Pig 时无法进入 mapreduce 模式(Hadoop 2 + MapReduce v1)