Apache Pig 处理带有引号的字段的 CSV
Posted
技术标签:
【中文标题】Apache Pig 处理带有引号的字段的 CSV【英文标题】:Apache Pig process CSV with fields wrapped in quotes 【发布时间】:2013-07-18 08:27:38 【问题描述】:如何处理某些字段用引号括起来的 CSV 文件?
例如要处理的行(字段分隔符是',')
我是column1,我是column2,“是的,我是column3”
该示例包含三列。但是下面的例子会说我有四列:
A = 使用 PigStorage(',') 加载 '/path/to/file';
请有任何建议,链接到资源..?
【问题讨论】:
试试org.apache.pig.piggybank.storage.CSVLoader。 【参考方案1】:尝试加载数据,然后执行 FOREACH GENERATE 以将数据重新生成为您需要的任何格式。对于需要删除引号的字段,请使用 REPLACE($3, '\"')。
data = LOAD 'testdata' USING PigStorage(",");
data = FOREACH data GENERATE
(chararray) $0 AS col1:chararray,
(chararray) $1 AS col2:chararray,
(chararray) REPLACE($3, '\"') AS col3:chararray);
【讨论】:
这不是一个解决方案,因为 Pig 将定义四列而不是三列。例如 column = "yes, I'm column3" 如果使用 PigStorage(",") 则为两列;以上是关于Apache Pig 处理带有引号的字段的 CSV的主要内容,如果未能解决你的问题,请参考以下文章
Bigquery - 在 CSV(联合表)中处理双引号和管道字段分隔符