2014-09-26 96 views
1

嗨有人知道为什么FILTER命令在下面的代码中什么都不返回?谢谢你!为什么PIG FILTER不会返回?

data = LOAD 'sample1.txt' 
     AS (campaign_id:chararray, 
     date:chararray, 
     time:chararray, 
     keyword:chararray, 
     display_site:chararray, 
       placement:chararray, 
     was_clicked:int, 
     cpc:int); 

count1 = FOREACH (GROUP data ALL) GENERATE COUNT(data); 
DUMP count1; 


clicked = FILTER data BY (was_clicked==1); 

DUMP clicked; 
count2 = FOREACH (GROUP clicked ALL) GENERATE COUNT(clicked); 
DUMP count2; 

我想DUMP data,并看到有一些记录与(was_clicked == 1)。 DUMP count1显示(100),如预期。

DUMP clicked什么也没有显示。 DUMP count2什么都没显示。

我叫以本地模式.pig文件:$ pig -x local analysis1.pig

+0

能否请您粘贴DUMP COUNT1的输出? – 2014-09-26 21:24:41

+0

hi @GauravPhapale输出是(100)。我再次检查了数据,发现我对数据使用了错误的方案。实际上,最后一列是数据中的contry:chararray,但我在该模式中写了was_clicked:int。这是问题。谢谢你的帮助! – 2014-09-27 23:13:39

回答

0

我没有看到脚本中的任何问题。它的工作正常。你可以粘贴你的样本输入吗?

input.txt 
aaa,1234,5678,bbb,ccc,ddd,2,100 
zzz,1234,5678,bbb,ccc,ddd,1,100 
xxx,1234,5678,bbb,ccc,ddd,1,100 
yyy,1234,5678,bbb,ccc,ddd,2,100 
jjj,1234,5678,bbb,ccc,ddd,1,100 
kkk,1234,5678,bbb,ccc,ddd,4,100 

PigScript:

data = LOAD 'input.txt' using PigStorage(',') 
     AS (campaign_id:chararray, 
     date:chararray, 
     time:chararray, 
     keyword:chararray, 
     display_site:chararray, 
     placement:chararray, 
     was_clicked:int, 
     cpc:int); 
count1 = FOREACH (GROUP data ALL) GENERATE COUNT(data); 
dump count1; 
clicked = FILTER data BY (was_clicked==1); 
dump clicked; 
count2 = FOREACH (GROUP clicked ALL) GENERATE COUNT(clicked); 
dump count2; 

output of count1: 
(6) 

Output of clicked: 
(zzz,1234,5678,bbb,ccc,ddd,1,100) 
(xxx,1234,5678,bbb,ccc,ddd,1,100) 
(jjj,1234,5678,bbb,ccc,ddd,1,100) 

Output of count2: 
(3) 
+0

Hi @Sivasakthi Jayaraman我再次检查它,发现我在LOAD命令中输入了错误的数据描述。最后一列是chararray在我的数据。对于这个愚蠢的问题抱歉...(Pig LOAD chararray into int ...) – 2014-09-26 20:11:12

+0

@YZhang,这可能是因为Hadoop使用模式定义进行READ而不是WRITE。 RDBMS中的Schema Definition用于Write,这恰恰相反 – addicted20015 2014-09-27 14:10:08

相关问题