2015-10-26 25 views
0

这里是我的PIG脚本:猪错误:无法打开迭代器的别名

json = LOAD '/tmp/events/*/*/flume-.*' USING JsonLoader('state:chararray, city:chararray, promotionType:chararray, promotionPlace: chararray, purchase:int'); 
grouped = FOREACH (group json BY (state, city, promotionType, promotionPlace)) GENERATE group, SUM(json.purchase) as purchase; 
grpd = GROUP grouped BY group.city; 
top1 = foreach grpd {sorted = order grouped by purchase desc;top = limit sorted 1;generate group, flatten(top);}; 
DUMP top1; 

它适用于多个文件,但对于多个文件(3K),它提供了错误:“无法打开别名TOP1迭代器” 。 任何想法如何解决这个问题?

+0

很难说,也许你的3k文件中有一个文件被破坏,或者它有不同的模式?您可以尝试加载并转储数据的联合。 – AntonyBrd

+0

它是相同的架构 –

+0

对于在寻找[错误1066:无法打开别名的迭代器]时发现此帖子的人(http://stackoverflow.com/questions/34495085/error-1066-unable-to-open-iterator- for-alias-in-pig-generic-solution)这里是[通用解决方案](http://stackoverflow.com/a/34495086/983722)。 –

回答

0

如果你有代码,主要是工程,除了一些文件,这里就是你可能要在思维更难'并不解决问题要做到:

  1. 查找文件中的错误发生并保持该数据
  2. 尝试数据的上半部分,如果发生错误保持这一部分并转到1
  3. 尝试底部(只是要确定),如果发生错误去1

以内很少的步骤,你应该只剩下1行,导致错误,并应该很容易检查。