我正在研究一个相当基本的Pig Latin脚本,一旦执行GENERATE,我就遇到了问题。在GENERATE之前,转储显示数据看起来像我期望的那样。但是,一旦我执行GENERATE,结果就是空集。根据Pig Latin Reference手册,这似乎是正确的。当脚本运行时,我没有收到任何错误(它报告成功。)如果我在LOAD期间对字段使用名称或位置表示法,则会发生这种情况。
我的剧本:
B = LOAD 'data';
DUMP B;
C = FOREACH B GENERATE (int)$2, (int)$3, (int)$4;
DESCRIBE C;
DUMP C;
这是输出:
(2014-01-26 08:14:21,672,1,0,1,55,...)
(2014-01-26 08:14:23,654,1,1,0,55,...)
C: {f1: int,f2: int,f3: int}
(,,)
(,,)
为什么DUMP C的输出不会产生(1,0,1),(1,1,0)?
答案 0 :(得分:1)
您的数据文件以逗号分隔。默认情况下,加载函数将解析制表符分隔的记录。 您可以使用PigStorage加载程序读取字符分隔的记录:
B = LOAD 'data' USING PigStorage(',');