在 PIG 中加载 CSV 文件
Load CSV file in PIG
在 PIG 中,当我们使用 LOAD 语句加载 CSV 文件时没有提及模式并且使用默认的 PIGSTORAGE (\t),会发生什么? Load 会正常工作吗?我们可以转储数据吗?否则它会抛出错误,因为文件有','并且 pigstorage 是'/t'吗?请指教
当您在没有使用 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 [=10=], , ;
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 中,当我们使用 LOAD 语句加载 CSV 文件时没有提及模式并且使用默认的 PIGSTORAGE (\t),会发生什么? Load 会正常工作吗?我们可以转储数据吗?否则它会抛出错误,因为文件有','并且 pigstorage 是'/t'吗?请指教
当您在没有使用 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 [=10=], , ;
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
.
希望有用。