在PIG中加载CSV文件

时间:2016-10-26 17:08:18

标签: apache-pig

在PIG中,当我们使用LOAD语句加载CSV文件而不提及架构&使用默认的PIGSTORAGE(\ t),会发生什么? Load可以正常工作,我们可以转储数据吗?否则它会抛出错误,因为文件有','并且pigstorage是'/ t'?请建议

1 个答案:

答案 0 :(得分:2)

当您在未使用PigStorage('\ t')定义架构的情况下加载csv文件时,由于输入文件的每一行都没有选项卡,因此整行将被视为一个元组。您将无法访问该行中的单个单词。

示例: 输入文件:

john,smith,nyu,NY
jim,young,osu,OH
robert,cernera,mu,NJ

a = LOAD 'input' USING PigStorage('\t');
dump a;

OUTPUT:
(john,smith,nyu,NY)
(jim,young,osu,OH)
(robert,cernera,mu,NJ)

b = foreach a generate $0, $1, $2;
dump b;
(john,smith,nyu,NY,,)
(jim,young,osu,OH,,)
(robert,cernera,mu,NJ,,)

理想情况下,b应该是:

(john,smith,nyu)
(jim,young,osu)
(robert,cernera,mu)

如果分隔符是逗号。但由于分隔符是一个选项卡,输入记录中不存在选项卡,因此整行被视为一个字段。如果一个字段为空,那么Pig doe snot会抱怨它 - 当有一个空值时它只输出任何东西。因此,当您转储b时,您只会看到逗号。

希望这很有用。