2017-02-10 13 views
0

を働いていないmeta_file豚、私は以下の豚のスクリプトを持って

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" 

をDUMPは正確に細かく、ファイルの内容と同じであるので、ありますメタの内容ですが、new_dは空です。 のmetais_vtaがありますが、まだnew_dが空であることがわかります。メタが正しくフィルタリングされないのはなぜですか?私はここで間違って何をしていますか?私は豚ラテン語を初めて使っているので、ここで何が問題になっているのか理解できません。

ご協力いただきありがとうございます。

+1

あなたは(is_vta == 'BY new_d = FILTERメタを試すことができます"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:引用符を処理するためにpiggybankを使用してください。

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 "''だけでなく、作業されたファイル自体から引用符を削除します。助けをありがとう:) –