[HADOOP] 돼지에서 NOT IN 절
HADOOP돼지에서 NOT IN 절
내가 좋아하는 시도하고있다
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>
여기에 대한 도움은 마지막 줄의 실행에이 점점 오류를 해결합니다.
해결법
-
==============================
1.LEFT OUTER JOIN을 사용하고 널 (null) 필터
LEFT OUTER JOIN을 사용하고 널 (null) 필터
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;
노트 나는 테스트 파일의 부부와 함께 샘플 스크립트를 작성하고 아래에 당신이 당신의 파일에서 데이터를 올바르게로드하는 경우 볼 수있는 작업 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;
그 ID를 test2.txt가하지 않기 때문에 그래서 위의 예제의 기록에 5,6,7,8 결과에 있어야합니다.
from https://stackoverflow.com/questions/41998767/not-in-clause-in-pig by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] '--map 열 - 하이브'무시 Sqoop을 기능 (0) | 2019.10.21 |
---|---|
[HADOOP] 하이브 해시 널 0의 결과로 기능, 1, 그 이유는 무엇입니까? (0) | 2019.10.21 |
[HADOOP] 파이썬 모듈 impyla를 사용하여 Kerberos를의 하둡 클러스터에 연결 (0) | 2019.10.21 |
[HADOOP] 추가 하이브 JDBC 의존성은 글래스 피시 배포를 나누기 (0) | 2019.10.21 |
[HADOOP] HBase를 + 커버 로스 : 키 탭이 만료에서 UserGroupInformation 로깅? (0) | 2019.10.21 |