Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 如何在另一个pig脚本中调用一个pig脚本_Hadoop_Apache Pig - Fatal编程技术网

Hadoop 如何在另一个pig脚本中调用一个pig脚本

Hadoop 如何在另一个pig脚本中调用一个pig脚本,hadoop,apache-pig,Hadoop,Apache Pig,我有一个hdfs文件,有100列,我想用pig处理。我想将这个文件加载到一个元组中,在一个单独的pig脚本中包含列名称,并从其他pig脚本中重用这个脚本。我该怎么做 假设这个100列的pig脚本是-100col.pig。如何从另一个.pig调用它?检查exec命令(用于批处理)或run命令(用于交互式脚本)。另外,如果需要使用(非grunt)shell命令,请检查fs命令。这里有一个很好的参考: 您应该尝试使用pig版本0.9中的宏 这里有上面提到的两个选项。 Pig提供run和exec命令来满

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


假设这个100列的pig脚本是-100col.pig。如何从另一个.pig调用它?

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


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


这里有上面提到的两个选项。 Pig提供run和exec命令来满足您的需求

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

我想您需要签出run命令来实现您的需求。

回答这个问题有点晚了,但我最近正在研究这个要求,发现几乎没有什么帮助,直到我找到这个,希望这能帮助有需要的人:

**这段摘录摘自《编程猪》一书

很长一段时间以来,整个脚本都需要放在一个文件中。这产生了 一些令人不快的数千行拉丁文字。从0.9开始,预处理器 可用于将一个Pig拉丁语脚本包含在另一个Pig拉丁语脚本中。连同 宏,现在可以写了 易于调试和重用的模块化程序: 导入用于将一个Pig拉丁语脚本包含在另一个Pig拉丁语脚本中:

--梅因猪

import将导入的文件直接写入Pig拉丁语脚本,而不是 导入语句。在前面的示例中,将显示divident_analysis.pig的内容 放在load语句的前面。请注意,无法导入文件 两次。如果您希望多次使用同一功能,则应将其编写为
宏并使用该宏导入文件。

运行命令完成了这一操作!exec在我的例子中不起作用,因为我希望100col.pig中定义的变量可以从第二个脚本中使用。跑吧。谢谢正如您所提示的,
RUN
具有额外的副作用;另请参见,其中解释了有关
RUN
EXEC
的更多信息。
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');