这是我的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),它会给出错误:“无法打开alias top1的迭代器”。有什么办法解决这个问题吗?
1条答案
按热度按时间o4hqfura1#
如果你的代码除了一些文件外大部分都是有效的,那么当“更努力地思考”并不能解决问题时,你可能想做的是:
查找发生错误的文件并保留此数据
尝试数据的上半部分,如果出现错误,保留该部分并转到1
尝试底部部分(只是为了确保),如果出现错误,请转到1
在几个步骤中,应该只剩下一行导致错误的代码,而且应该很容易检查。