具有多个分隔符的 apache pig 加载数据

Posted

技术标签:

【中文标题】具有多个分隔符的 apache pig 加载数据【英文标题】:apache pig load data with multiple delimiters 【发布时间】:2016-03-25 12:21:25 【问题描述】:

大家好,我在使用 apache pig 加载数据时遇到问题,文件格式如下:

"1","2","xx,yy","a,sd","3"

所以我想通过使用多个分隔符"," 2 双引号和一个逗号来加载它:

A = LOAD 'file.csv' USING PigStorage('","') AS (f1,f2,f3,f4,f5);

但 PigStorage 不接受多重分隔符 ","。我该怎么做?非常感谢!

【问题讨论】:

【参考方案1】:

PigStorage 将单个字符作为分隔符。您将使用来自PiggyBank 的内置函数。下载 piggybank.jar 并保存在与您的 pigscript 相同的文件夹中。在您的 pigscript 中注册 jar。

REGISTER piggybank.jar;

DEFINE CSVLoader org.apache.pig.piggybank.storage.CSVLoader();

A = LOAD 'test1.txt' USING CSVLoader(',') AS (f1:int,f2:int,f3:chararray,f4:chararray,f5:int);
B = FOREACH A GENERATE f1,f2,f3,f4,f5;
DUMP B;

另一种选择是将数据加载到一行中,然后使用STRSPLIT

A = LOAD 'test1.txt' USING TextLoader() AS (line:chararray);
B = FOREACH A GENERATE FLATTEN(STRSPLIT(line, '","'));
DUMP B;

【讨论】:

这是我的问题之一,它确实帮助我解决了其中的一部分。非常有用谢谢。如果可能的话,你能不能也看看这个 cmets:***.com/questions/60942521/…

以上是关于具有多个分隔符的 apache pig 加载数据的主要内容,如果未能解决你的问题,请参考以下文章

使用模式加载数据时出现 Apache Pig ClassCast 异常

Apache Pig - 具有多个匹配条件的 MATCHES

使用管道连字符管道将数据加载到 Pig |-|分隔符

对存储在 Hive 中的数据运行 Pig 查询

Apache Pig 存储分隔符

Apache Pig:使用 hadoop fs -text 加载显示良好的文件