Apache pig 传递清管器宏参数

Apache pig 传递清管器宏参数,apache-pig,Apache Pig,我有一只猪 define chop_massive (my, maxev) returns grouped, massive { gr = foreach (group $my by id) generate group as id, $my; split gr into massive if COUNT($my) > $maxev, grouped otherwise; $grouped = grouped; $massive = foreach mass

我有一只猪

define chop_massive (my, maxev) returns grouped, massive {
  gr = foreach (group $my by id) generate group as id, $my;
  split gr into
    massive if COUNT($my) > $maxev,
    grouped otherwise;
  $grouped = grouped;
  $massive = foreach massive generate id, COUNT($my) as $my;
}; 
我的问题是传递
maxev
参数。 当我使用常量文字(例如,
100L
)时,一切正常。 但是,我想使用命令行上使用
-param
指定的
$MAX_事件

我试过了

A, massive = chop_massive(A, $MAX_EVENTS);
A, massive = chop_massive(A, ($MAX_EVENTS));
A, massive = chop_massive(A, '$MAX_EVENTS');
massive if COUNT($my) > $MAX_EVENTS,
得到

mismatched input '100L' expecting set null
mismatched input '(' expecting set null
Macro doesn't support user defined schema that contains name that conflicts with alias name: A
我试过了

A, massive = chop_massive(A, $MAX_EVENTS);
A, massive = chop_massive(A, ($MAX_EVENTS));
A, massive = chop_massive(A, '$MAX_EVENTS');
massive if COUNT($my) > $MAX_EVENTS,
得到

mismatched input '100L' expecting set null
mismatched input '(' expecting set null
Macro doesn't support user defined schema that contains name that conflicts with alias name: A
我试过了

A, massive = chop_massive(A, $MAX_EVENTS);
A, massive = chop_massive(A, ($MAX_EVENTS));
A, massive = chop_massive(A, '$MAX_EVENTS');
massive if COUNT($my) > $MAX_EVENTS,
得到

mismatched input '100L' expecting set null
mismatched input '(' expecting set null
Macro doesn't support user defined schema that contains name that conflicts with alias name: A
我试过了

A, massive = chop_massive(A, $MAX_EVENTS);
A, massive = chop_massive(A, ($MAX_EVENTS));
A, massive = chop_massive(A, '$MAX_EVENTS');
massive if COUNT($my) > $MAX_EVENTS,
在宏中,得到了

Macro inline failed for macro 'chop_massive'. Reason: Undefined parameter : MAX_EVENTS
(这个错误至少是清楚和合理的)


那么我该怎么办呢?

虽然我在任何地方都没有看到它的文档,但如果表达式不支持作为宏参数,我也不会感到惊讶。为什么不将
$EVENTS\u PER_DAY
$DAYS
作为参数传递给宏(三个参数而不是两个参数)?

我相信您刚才得到的错误与参数替换无关——这是因为您在宏返回和脚本的其他地方都使用了
A
作为别名。试着把它换成别的东西。