2017-02-10 314 views
0

我有以下的豬腳本,豬過濾器不工作

meta_file = LOAD 'meta_file' USING PigStorage(','); 

DUMP meta_file; 

meta = FOREACH meta_file GENERATE (chararray)$0 AS is_vta:chararray, (chararray)$1 AS id:long; 

DUMP meta; 

new_d = FILTER meta BY (is_vta == 't'); 
DUMP new_d; 

內容的meta_file

"t","7181397" 
"t","6331589" 
"f","7266217" 
"t","6051440" 
"t","6901437" 
"t","6805292" 
"f","7144764" 
"t","6820265" 
"f","7515321" 
"t","4777938" 

meta_file DUMP正是很好,是相同文件的內容,因此是元的內容,但new_d是空的。我可以看到有is_vtameta與值t,但仍然new_d爲空。爲什麼不能正確過濾?我在這裏做錯了什麼?我是Pig Latin的新手,我無法弄清楚這裏可能是什麼問題。

感謝您的幫助。

+1

你可以嘗試new_d =過濾元BY(is_vta ==' 「T」'); ? – dltu

+0

@dltu是的,引號引起了問題。 'is_vta =='「t」''以及從文件本身刪除引號工作。感謝您的幫助:) –

回答

1

簡單的方法:

new_d = FILTER meta BY is_vta MATCHES '.*t.*'; 

另一種解決方案:

remquotes = FOREACH meta GENERATE REPLACE($0, '\\"', '') AS is_vta:chararray, id; 

new_d = FILTER remquotes BY is_vta == 't'; 
+0

是的,引號引起了問題。 'is_vta =='「t」''以及從文件本身刪除引號工作。謝謝您的幫助 :) –

1

我覺得引號引起的問題:2點的方式來處理他們在這裏 1:使用撲滿處理報價:休息你的報價應該工作。

REGISTER 'piggybank.jar' -- > this jar handles quotes by default. 

A = LOAD 'fil.csv' using org.apache.pig.piggybank.storage.CSVExcelStorage(',') as (---Your Schema ---); 

或 2:

use regex and trim quotes. 
http://stackoverflow.com/questions/29119557/remove-single-quotes-from-data-using-pig 
+0

是的,引號引起了問題。 'is_vta =='「t」''以及從文件本身刪除引號工作。感謝您的幫助:) –