如何在另一个猪脚本中调用猪脚本

时间:2011-09-26 15:33:16

标签: hadoop apache-pig

我在hdfs中有一个包含100列的文件,我想使用pig进行处理。我想将这个文件加载到一个单独的猪脚本中带有列名的元组中,并重用其他猪脚本中的这个脚本。我该怎么做?

说这100列猪脚本是 - 100col.pig。我如何从anotherone.pig中调用它?

4 个答案:

答案 0 :(得分:5)

检查exec命令(用于批处理)或run命令(用于交互式脚本)。此外,如果您需要使用(非grunt)shell命令,请检查fs命令。这是一个很好的参考:

http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html

答案 1 :(得分:3)

您应该尝试使用pig 0.9版本中的宏。

http://pig.apache.org/docs/r0.9.1/cont.html#macros

答案 2 :(得分:2)

这个答案有点晚了,但我最近正在研究这个要求,发现几乎没有任何帮助,直到我找到了这个,希望这会帮助有需要的人:

**此摘录摘自Programming Pig book。

在Pig Latin中很长一段时间,整个脚本需要在一个文件中。这产生了 一些相当令人不快的多线千猪拉丁文字。从0.9开始,预处理器 可以用来在另一个中包含一个Pig Latin脚本。与...一起使用 宏,现在可以写 模块化Pig Latin,更易于调试和重用: import用于在另一个中包含一个Pig Latin脚本:

- main.pig

import '../examples/ch6/dividend_analysis.pig';
daily = load 'NYSE_daily' as (exchange:chararray, symbol:chararray,
date:chararray, open:float, high:float, low:float, close:float,
volume:int, adj_close:float);
results = dividend_analysis(daily, '2009', 'symbol', 'open', 'close');

import将导入的文件直接写入Pig Latin脚本而不是 进口声明。在前面的例子中,dividend_analysis.pig的内容将会 紧接在加载语句之前。请注意,无法导入文件 两次。如果您希望多次使用相同的功能,则应将其写为 一个宏并使用该宏导入文件。

答案 3 :(得分:1)

这里有2个选项,如上所述。 Pig提供run和exec命令来解决你的需求。

exec命令用于调用独立的pig脚本和独立运行。 run命令用于运行pigcipt并保留其变量和别名。

我想你需要检查一下run命令才能达到你的要求。 http://pig.apache.org/docs/r0.9.1/cmds.html#run

相关问题