错误在下面的函数中,我正在尝试生成2个熵测量值(后者以< 5频率删除所有事件)。
我的错误:
错误1200:无法扩展宏'TOTUPLE'。原因:必须在扩展之前定义宏。
这很奇怪,因为TOTUPLE是一个内置函数。其他猪脚本使用TOTUPLE没有问题。
代码:
define dual_entropies (search, field) returns entropies {
summary = summary_total($search, $field);
entr1 = count_sum_entropy(summary, $field);
summary = filter summary by events >= 5L;
entr2 = count_sum_entropy(summary, $field);
$entropies = TOTUPLE(entr1, entr2);
};
请注意,entr1和entr2都是单个数字,而不是数字的向量 - 我怀疑这是问题的一部分。
答案 0 :(得分:1)
我遇到了类似的困惑。我不确定它是否一般都是正确的但是当它是FOREACH操作的一部分时,Pig只喜欢TOTUPLE。我通过做所有人的团队工作,返回一个包含单个元组的包,然后是FOREACH .. GENERATE,例如:
B = group A ALL;
C = foreach B generate 'x', 2, TOTUPLE('a', 'b', 'c');
dump C;
... (X,2,(HI,2,3))
也许这会有所帮助