如何使用不同的PigStorage运算符将数据加载到pig中

时间:2017-04-17 13:22:58

标签: apache-pig hadoop2

我是Apache Pig的新手,并试图加载测试Twitter数据,以找出每个用户名的推文数量。以下是我的数据

format(twitterId,comment,userRefId):

Sample Data

当我尝试使用PigStorage将数据加载到Pig中时(',')它将我的评论部分也分成多个字段,因为评论也可能有','。请告诉我如何在Pig中正确加载这些数据。我正在使用以下命令:

data = LOAD '/home/vinita/Desktop/Material/PIG/test.csv' using PigStorage(',') AS (id:chararray,comment:chararray,refId:chararray);

2 个答案:

答案 0 :(得分:0)

将记录加载到一行中,然后将“with | and”替换为|。这将确保字段分离,然后使用STRSPLIT获取3个字段。

A = LOAD 'data.txt' AS (line:chararray);
B = FOREACH A GENERATE REPLACE(REPLACE(line,',"','|'),'",','|');
C = FOREACH B GENERATE STRSPLIT($0,'\\|',3);
DUMP C;

修改 我使用示例文本来运行脚本并且工作正常。请参阅下面的

enter image description here

答案 1 :(得分:0)

如果更改源数据中的分隔符是一个选项,我会去那条路线。这使得开始和追踪问题可能要容易得多。

如果将分隔符更改为|,则代码可能如下所示:

data = LOAD '/home/vinita/Desktop/Material/PIG/test.csv' using PigStorage('|') AS (id:chararray,comment:chararray,refId:chararray);