2014-09-26 91 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

相關問題