2017-05-30 111 views
1

嗨,我有一个这样的猪脚本。在做foreach语句时,它会抛出无效的标量投影错误。这里是我的代码。foreach中的标量投影无效

a = load 'file' using PigStorage(':'); 
b = group a by ($1, $7, $11); 
c = foreach b generate flatten(group), COUNT(a) as (cnt: int); 
d = filter c by cnt>1; 
e = foreach d generate flatten(a) ; 

如下所示

<line 6, column 31> Invalid scalar projection: a : A column needs to be projected from a relation for it to be used as a scalar 

该错误的任何帮助将不胜感激。

+1

我昨天张贴了这个代码作为一个答案。如果你在'$ 1,$ 7,$ 11'分组后没有得到任何重复的行,你的关系'd'将是空的,因此当你试图实现关系'e'时,你会得到这个错误。 – philantrovert

+0

谢谢philan ... – Rakshita

回答

0

问题是因为'a'不存在于'd'关系模式中。

描述'd'模式,得到: d:{bytearray,bytearray,bytearray,cnt:int}其中'a'不存在。

在脚本,C关系形成,通过压平的元素组成的组场和数量的投影中,不包含在关系C.