Macros 将别名和字段传递到pig宏中

Macros 将别名和字段传递到pig宏中,macros,apache-pig,Macros,Apache Pig,我试图将别名和字段传递给pig宏: define mymac (a1, f, a2) returns void { foreach (join $a1 on $f, $a2 on field) generate $a1::$f as $f, $a2::field as field; }; 我犯了一个错误 Unexpected character '$' 在$a1::$f中的第二个$上,当我将宏调用为 mymac(x,foo,y); 我也试过了 define mymac (a1,

我试图将别名和字段传递给pig宏:

define mymac (a1, f, a2) returns void {
  foreach (join $a1 on $f, $a2 on field) generate
    $a1::$f as $f, $a2::field as field;
};
我犯了一个错误

Unexpected character '$'
$a1::$f
中的第二个
$
上,当我将宏调用为

mymac(x,foo,y);
我也试过了

define mymac (a1, f, af, a2) returns void {
  foreach (join $a1 on $f, $a2 on field) generate
    $af as $f, $a2::field as field;
};
mymac(x,foo,x::foo,y);
还有更隐秘的错误

org.apache.pig.PigServer - exception during parsing: Error during parsing. Pig script failed to parse: at expanding macro

那么,我该怎么办?如何将别名与宏中的字段相结合?

调用宏时,需要将字段名放入
'
,例如
mymac(x,'foo','x::foo',y)。我已经测试了你提到的第二种方法,它是有效的