2017-04-17 24 views
0

我是新来的Apache猪和尝试加载测试Twitter的数据由每一个用户名,找出鸣叫的次数将数据加载到猪。下面是一个使用PigStorage作为我的数据如何使用不同的PigStorage操作

format(twitterId,comment,userRefId): 

Sample Data

当我试图将数据加载到猪(”‘),它也分我的评论区分为多个字段,因为评论也可以有’, ”。请让我知道如何在Pig中正确加载这些数据。我使用下面的命令:

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

是否修改源数据使用不同的分离器的选项? – darkownage

+0

@darkownage:是 –

回答

0

装入记录成一条线,然后再更换,“与|和”,用|。这将确保字段分离,然后用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; 

编辑: 我用示例文本运行脚本和工作fine.See下面

enter image description here

+0

将数据加载为一行时,它只加载第一个字段值,而不是整个数据...... :( –

+0

@VinitaGupta你的加载语句是什么样的?不要使用PigStorage –

+0

@ inquistive_mind我已经使用下面的语句用于加载数据作为行:X = LOAD '/home/vinita/Desktop/Material/PIG/test1.csv' 使用PigStorage( '')AS(行:chararray); –

0

如果您的源数据改变分离器是一种选择,我会去那条路线。使它开始并追踪问题可能更容易。

如果你改变你的分隔符为|,你的代码可能是这样的:

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

我想解决这个问题,而无需更改源数据,请让我知道这是否可以完成 –

相关问题