又遇到Pig的一个Bug

(这篇blog没啥阅读价值,纯粹工作郁闷吐槽)

测试数据,是一个文本文件,每行都是一个整数。

[app_admin@test14 data]$ more /tmp/data/data1.txt
1
2
3
4
5
6

测试脚本如下:

a = load '/tmp/data/data1.txt' USING PigStorage() as (id);
g = group a by id;
d = foreach g {
b1 = FILTER a by id > 1;
b2 = FILTER a by id > 2;
b3 = FILTER a by id > 3;
GENERATE COUNT(b1.id) as c1 ,COUNT(b2.id) as c2 ;
}

然后我们看看d的schema:

grunt> describe d;
2012-11-20 18:21:33,598 [main] WARN org.apache.pig.PigServer - Encountered Warning IMPLICIT_CAST_TO_INT 6 time(s).
d: {id: bytearray}

完全错了。正确的结果是d: {c1: long,c2: long}。

原因是因为我写了一行废代码(就是上面标红的那个)。我进行了过滤操作,但是之后没有引用b3这个alias。然后pig就因此产生一个完全错误的schema。

然后我去jira上搜了一下,上周已经有人发现这个Bug了:https://issues.apache.org/jira/browse/PIG-2970

pig的nested foreach 的BUG超级多,尽量能避则避吧!

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥