在 Apache Pig 中处理定界符

Handing delimiter in Apache Pig

我有一个逗号分隔值文件。

数据示例:

1001,Laptop,beautify,laptop amazing price,<HTML>XYZ</HTML>,1345

1002,Camera,Best Mega Pixel,<HTML>ABC</HTML>,4567

1003,TV,Best Price,<HTML>DEF</HTML>,8791

我们只有 5 列:id, Device, Description, HTML Code, Identifier

对于一些记录,Description 列中有一个额外的 ,

例如,上面示例数据中的 First Records 有多余的 , [beautify,laptop amazing price] 我想删除。

将数据加载到 PIG 5 时:

INFILE1 = LOAD 'file1.csv' using PigStorage(',') as (id,Device,Description,HTML Code,Identifier)

创建数据时出现问题。

能否请您建议如何在 Pig 脚本中处理此数据问题?

如果文件是正确的 csv,它应该在包含逗号的字段的开头和结尾处有双引号。然后,您只需使用 CSVLoader 加载数据:https://pig.apache.org/docs/r0.8.1/api/org/apache/pig/piggybank/storage/CSVLoader.html.

register 'piggybank.jar' ;
define CSVLoader org.apache.pig.piggybank.storage.CSVLoader();
INFILE1 = LOAD 'file1.csv' using CSVLoader() as (id,Device,Description,HTML Code,Identifier)

如果您没有任何双引号,也许您可​​以尝试使用 ragex,因为您知道您的第三个字段以“<”开头 ..(使用 Pig https://pig.apache.org/docs/r0.11.1/func.html#regex-extract-all 中的 Regex 函数)。如果您需要更多信息,请告诉我。