在 PIG 中加载 CSV 文件

Posted

技术标签:

【中文标题】在 PIG 中加载 CSV 文件【英文标题】:Load CSV file in PIG 【发布时间】:2016-10-26 17:08:18 【问题描述】:

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

【问题讨论】:

1) 向我们展示您的负载声明,以及 2) 您为什么不自己尝试一下? 【参考方案1】:

当您加载 csv 文件而不使用 PigStorage('\t') 定义架构时,由于输入文件的每一行中没有制表符,因此整行将被视为一个元组。您将无法访问该行中的各个单词。

示例: 输入文件:

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)

如果分隔符是逗号。但是由于分隔符是一个制表符,并且输入记录中不存在制表符,因此将整行视为一个字段。如果字段为空,猪不会抱怨 - 当有空时它什么也不输出。因此,当您转储 b 时,您只会看到逗号。

希望有用。

【讨论】:

以上是关于在 PIG 中加载 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

PIG 加载 CSV - 地图类型错误

CSV 将大量数据加载到 Pig 中

在 pig 中加载多个文件

在 Hortonworks Sandbox 内的 Pig 脚本中加载 JSON 文件

在 pig 中加载多个文件 - 扩展

Pig:使用 .pig_schema 模式文件加载数据