具有多个分隔符的 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 异常