I ended up doing a manual creation of a temp var:

blah0 = foreach $blah generate *;

then substitute $blah with blah0 below




On Thu, Nov 8, 2012 at 7:36 AM, David LaBarbera <
[email protected]> wrote:

> Have you tried using a positional reference ($0)?
>
> David
>
> On Nov 7, 2012, at 6:44 PM, Yang <[email protected]> wrote:
>
> > hadoop@ip-10-245-54-191:~/top50/new$ cat a.pig
> > DEFINE mymacro(blah, zoo) RETURNS foo {
> > x = JOIN $blah BY id, $zoo BY id;
> >        y = JOIN x BY $blah::id, $zoo BY id;
> > $foo = foreach y generate x::$blah::id;
> > };
> >
> >
> > raw = load 'a.txt' as (id:chararray);
> > mymacro(raw, raw);
> > #############################################
> >
> > with the above code, I had to refer to fields within a JOIN result by the
> > table name, which is passed in as a MACRO param. but it seems that pig
> > can't recognize this syntax:
> >
> > hadoop@ip-10-245-54-191:~/top50/new$ pig -x local a.pig
> > 2012-11-07 23:40:53,524 [main] INFO  org.apache.pig.Main - Logging error
> > messages to: /home/hadoop/top50/new/pig_1352331653520.log
> > 2012-11-07 23:40:53,636 [main] INFO  org.apache.pig.impl.util.Utils -
> > Default bootup file /home/hadoop/.pigbootup not found
> > 2012-11-07 23:40:53,739 [main] INFO
> > org.apache.pig.backend.hadoop.executionengine.HExecutionEngine -
> > Connecting to hadoop file system at: file:///
> > <file a.pig, line 4, column 30>  Unexpected character '$'
> > 2012-11-07 23:40:54,399 [main] ERROR org.apache.pig.tools.grunt.Grunt -
> > ERROR 1200: <file a.pig, line 4, column 30>  Unexpected character '$'
> > Details at logfile: /home/hadoop/top50/new/pig_1352331653520.log
> >
> >
> > how can I work around this?
> >
> > thanks
> > Yang
>
>

Reply via email to