问题
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