2013-12-17 119 views
4

我有一个关于猪拉丁文的问题。有没有办法如何从另一个猪脚本中调用一些猪脚本?从其他猪脚本调用猪拉丁文脚本

我知道它可以运行用户定义函数(UDF),如:

REGISTER myudfs.jar; 
A = LOAD 'student_data' AS (name: chararray, age: int, gpa: float); 
B = FOREACH A GENERATE myudfs.UPPER(name); 
DUMP B; 

但它不工作的猪脚本。我们统计了一些不同的客户参数和可读性和重用这将是巨大的装载一些猪片段,类似:

REGISTER somepigscript.pig; 
LOAD somepigscript.pig; 

你知道,如果有任何这样的功能?或者任何UDF?

谢谢你,有一个美好的一天...

回答

4

猪有两个命令,RUNEXEC。它们的不同之处在于RUN将执行Pig脚本并将其别名和属性留作后续使用,而EXEC只是简单地执行脚本并在调用环境未改变的情况下返回(但可用在HDFS上创建的任何新文件)。

例如,我有一个宏,罐子和属性的集合,我想在每个写脚本的开始处设置它们。我不是每次都输入它们,而是将它写入Pig脚本,并在我的脚本开始时致电RUN /my/script.pig

+0

非常感谢Winnie。我认为这是一个很好的练习,如何使用Pig脚本进行操作。 –

+1

其他一些注意事项:'/ home//.pigbootup'中的1-共享启动命令将自动执行(不需要RUN)。 2-'RUN'会产生额外的副作用,将脚本中的每条命令放入'grunt'历史记录中(就好像您已经单独执行脚本中的命令;'EXEC'只保留'EXEC'行在历史上。)。 –