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的主要内容,如果未能解决你的问题,请参考以下文章

Apache Pig - 如何从 CSV 文件中读取数据

Pig CSVExcelStorage 双引号逗号

Bigquery - 在 CSV(联合表)中处理双引号和管道字段分隔符

csv 在 pig 中读取,csv 文件包含带引号的逗号

我的 CSV 文件带有双引号括起来的字段 - 无法识别数值“12131”

我们如何使用 python sdk 在 Apache Beam 中读取带有附件的 CSV 文件?