通过元组返回Pig宏的输出时出错

时间:2014-08-19 18:07:27

标签: apache-pig

错误在下面的函数中,我正在尝试生成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都是单个数字,而不是数字的向量 - 我怀疑这是问题的一部分。

1 个答案:

答案 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))

也许这会有所帮助