首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在猪的CSVExcelStorage中使用-tagFile选项

如何在猪的CSVExcelStorage中使用-tagFile选项
EN

Stack Overflow用户
提问于 2017-07-20 00:17:47
回答 2查看 166关注 0票数 2

我必须获得每一行的文件名,所以我使用了

代码语言:javascript
复制
data = LOAD 'data.csv' using PigStorage(',','-tagFile') AS (filename:chararray);

但在data.csv中,一些列的内容中也有逗号(,),以便处理我使用的逗号问题

代码语言:javascript
复制
data = LOAD 'data.csv' using org.apache.pig.piggybank.storage.CSVExcelStorage()AS (filename:chararray);

但是我没有得到在CSVExcelStorage中使用-tagFile选项的任何选项。请告诉我如何同时使用CSVExcelStorage和-tagFile选项?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-14 00:06:31

我找到了执行这两个操作的方法(获取每行中的文件名,如果分隔符出现在列内容中,则替换它)

代码语言:javascript
复制
data = LOAD 'data.csv' using PigStorage(',','-tagFile') AS (filename:chararray, record:chararray);

/*replace comma(,) if it appears in column content*/
replaceComma = FOREACH data GENERATE filename, REPLACE (record, ',(?!(([^\\"]*\\"){2})*[^\\"]*$)', '');

/*replace the quotes("") which is present around the column if it have comma(,) as its a csv file feature*/
replaceQuotes = FOREACH replaceComma GENERATE filename, REPLACE ($4,'"','') as record;

在没有逗号的情况下正确加载数据后,我可以自由地执行任何操作。有关详细的使用案例,请访问my blog

票数 2
EN

Stack Overflow用户

发布于 2017-07-20 00:37:52

您不能将-tagefile与CSVExcelStorage一起使用,因为CSVExcelStorage没有-tagFile option.The,解决方法是更改文件的分隔符,并使用带有新分隔符和-tagFile的PigStorage,或者替换数据中的逗号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45195963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档