通过猪宏观参数

时间:2014-07-17 14:32:55

标签: 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 massive generate id, COUNT($my) as $my;
}; 

我的问题是传递maxev参数。 当我使用常量文字(例如100L)时,一切都很好。 但是,我想在命令行上使用$MAX_EVENTS指定-param

我试过

A, massive = chop_massive(A, $MAX_EVENTS);

得到了

mismatched input '100L' expecting set null

我试过

A, massive = chop_massive(A, ($MAX_EVENTS));

得到了

mismatched input '(' expecting set null

我试过

A, massive = chop_massive(A, '$MAX_EVENTS');

得到了

Macro doesn't support user defined schema that contains name that conflicts with alias name: A

我试过

massive if COUNT($my) > $MAX_EVENTS,

在宏内部并获得

Macro inline failed for macro 'chop_massive'. Reason: Undefined parameter : MAX_EVENTS

(这个错误至少是明确而合理的)。

那我该怎么办?

1 个答案:

答案 0 :(得分:0)

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