はPIG

2017-02-02 5 views
0

で句では、私は最後の行の実行でこれを取得し、エラーを解決するためにはPIG

select * from A where A.ID NOT IN (select id from B) (in sql) 

sourcenew = LOAD 'hdfs://HADOOPMASTER:54310/DVTTest/Source.txt' USING PigStorage(',') as (ID:int,Name:chararray,FirstName:chararray ,LastName:chararray,Vertical_Name:chararray ,Vertical_ID:chararray,Gender:chararray,DOB:chararray,Degree_Percentage:chararray ,Salary:chararray,StateName:chararray); 
destnew = LOAD 'hdfs://HADOOPMASTER:54310/DVTTest/Destination.txt' USING PigStorage(',') as (ID:int,Name:chararray,FirstName:chararray ,LastName:chararray,Vertical_Name:chararray ,Vertical_ID:chararray,Gender:chararray,DOB:chararray,Degree_Percentage:chararray ,Salary:chararray,StateName:chararray); 
c= FOREACH destnew GENERATE ID; 
D=FILTER sourcenew BY NOT ID (c.ID); 
org.apache.pig.tools.pigscript.parser.ParseException: Encountered " <PATH> "D=FILTER "" at line 1, column 1. 
Was expecting one of: 
<EOF> 
"cat" ... 
"clear" ...<EOF> 

のように、この上の任意のヘルプをしようとしていませんで。

+0

IDで2つの関係をグループ化し、一致 – 54l3d

答えて

1

使用LEFT OUTERヌルを登録しようとフィルタ

sourcenew = LOAD 'hdfs://HADOOPMASTER:54310/DVTTest/Source.txt' USING PigStorage(',') as (ID:int,Name:chararray,FirstName:chararray ,LastName:chararray,Vertical_Name:chararray ,Vertical_ID:chararray,Gender:chararray,DOB:chararray,Degree_Percentage:chararray ,Salary:chararray,StateName:chararray); 
destnew = LOAD 'hdfs://HADOOPMASTER:54310/DVTTest/Destination.txt' USING PigStorage(',') as (ID:int,Name:chararray,FirstName:chararray ,LastName:chararray,Vertical_Name:chararray ,Vertical_ID:chararray,Gender:chararray,DOB:chararray,Degree_Percentage:chararray ,Salary:chararray,StateName:chararray); 
c = FOREACH destnew GENERATE ID; 
d = JOIN sourcenew BY ID LEFT OUTER,destnew by ID; 
e = FILTER d by destnew.ID is null; 

NOTE 私はテストファイルのカップルとサンプルスクリプトを書いて、下記あなたがロードしているかどうかを確認小文字取り組んsolution.Inですあなたのファイルから正しくデータを取得します。

test1.txtという

1 abc 
2 def 
3 ghi 
4 jkl 
5 mno 
6 pqr 
7 stu 
8 vwx 
1 abc 
2 def 
3 ghi 
4 jkl 
1 abc 
2 def 
3 ghi 
1 abc 
2 def 

test2.txtという名前

1 
2 
3 
4 

スクリプト

A = LOAD 'test1.txt' USING PigStorage('\t') AS (aid:int,name:chararray); 
B = LOAD 'test2.txt' USING PigStorage('\t') AS (bid:int); 
C = JOIN A BY aid LEFT OUTER,B BY bid; 
D = FILTER C BY bid is null; 
DUMP D; 

したがって、上記の例でRECOこれらのIDはtest2.txtにないので、rds 5,6,7,8が結果になるはずです。

Output

+0

ERROR org.apache.pig.tools.grunt.Grunt持たないこれらをフィルタリングについて考えてみよう - ERROR 1066:別名日間反復子を開くことができません。バックエンドエラー:org.apache.pig.backend.executionengine.ExecException:ERROR 0:スカラーに出力に複数の行があります。第1回:(1)、第2:(2)(一般的な原因: "JOIN"、 "FOREACH ... GENERATE foo.bar"は "foo :: bar"とする)@inquisitive_mind – Vickyster

+0

そして私はd = FILTER sourcenew BY NOT(sourcenew.ID == c.ID); – Vickyster

+0

@Vickyster、私は答えを編集し、また例を含んでいます。 –