在 Apache Pig 中处理分隔符
Posted
技术标签:
【中文标题】在 Apache Pig 中处理分隔符【英文标题】:Handing delimiter in Apache Pig 【发布时间】:2015-10-19 08:52:16 【问题描述】:我有一个逗号分隔值文件。
数据示例:
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
。
对于一些记录,,
列中有一个额外的 ,
。
例如,上面示例数据中的First Records
有多余的,
[beautify,laptop amazing price]
,我想消除它。
在将数据加载到 PIG 5 时:
INFILE1 = LOAD 'file1.csv' using PigStorage(',') as (id,Device,Description,HTML Code,Identifier)
创建了一个数据问题。
您能否建议如何在 Pig Script 中处理此数据问题?
【问题讨论】:
【参考方案1】:如果文件是正确的 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,因为您知道您的第三个字段以“https://pig.apache.org/docs/r0.11.1/func.html#regex-extract-all 中使用 Regex 函数)。如果您需要更多信息,请告诉我。
【讨论】:
以上是关于在 Apache Pig 中处理分隔符的主要内容,如果未能解决你的问题,请参考以下文章