Invoke Pig Latin script from other Pig script

五迷三道 提交于 2020-01-11 09:34:33

问题


I have a question about PIG Latin. Is there any way how to invoke some pig script from the other pig script?

I know it is possible to run user defined functions (UDFs) like:

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

But it is not working for pig script. We are counting some different customer parameters and for readibility and reuse it would be great to load some pig snippets, something like:

REGISTER somepigscript.pig;
LOAD somepigscript.pig;

Do you know if there is any functionality like this? Or any UDF?

Thank you and have a good day...


回答1:


Pig has two commands, RUN and EXEC. They differ in that RUN will execute the Pig script and leave its aliases and properties available for subsequent usage, while EXEC simply executes the script and returns with the calling environment unaltered (but with any new files created on HDFS available).

For example, I have a collection of macros, jars, and properties that I want to set at the beginning of every single script I write. Rather than type them every time, I put that into a Pig script and call RUN /my/script.pig at the beginning of my scripts.




回答2:


You can use Macros for such things: http://pig.apache.org/docs/r0.11.1/cont.html#macros



来源:https://stackoverflow.com/questions/20636007/invoke-pig-latin-script-from-other-pig-script

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!