나는 돼지 작품을 사용하는 것에 비해 상대적으로 새로운입니다. 나는 id, feat1 : value, feat2 : value ... featN : 값 필드를 가진 거대한 테이블 (3.67 Mil Entries)을 가지고있다. ID 텍스트이며 feat_i이 기능의 이름과 값입니다 어디에 기능 주어진 ID에 대한 전에 대한 thevalue. 특징의 수가 터프 드 표현 이후 각 튜플마다 다를 수 있습니다. 이 데이터의 3 행의 예는 예를 들어돼지 라틴어의 여러 필드에있는 튜플 필터링 및 그룹화
- ID1 F1 : 23 F3 : 45 F7 : 67
- ID2 F2 : 12 F3 : 23 개 F5 : 21
- 의 ID3 F7 : 30 f16 : 8 f23 : 1
이제는 일반적인 기능이있는 쿼리를 그룹화하는 작업을 수행합니다. 어떤 기능이 겹치는 쿼리 집합을 얻을 수 있어야합니다. 몇 가지 시도했습니다. CROSS 및 JOINS 데이터가 폭발적으로 생성되고 감속기가 작동하지 않습니다. GROUP BY 명령을 조절하는 것에 익숙하지 않은 Im.
공통 기능을 가진 쿼리 만 선택하도록 GROUP BY에서 조건을 작성하는 방법이 있습니까? 위의 행의 경우
이 될 것입니다 결과 :
- ID1, ID2
- ID1, ID3
감사
나는 돼지에서이 작업을 수행하는 우아한 방법을 생각할 수 없다
예를 들어, id2와 id3의 공통점은 어디입니까? – Frederic
죄송합니다, 당신 말이 맞습니다. 방금 대답을 수정했습니다. –
PIG에는 행을 가로 질러 작업 할 수있는 조작이 없습니다. 이 경우 JOIN 또는 CROSS가 불가피합니다. 다른 해결책은 UDF를 사용하고 모든 데이터를 UDF에 단일 행으로 전달하는 것입니다. UDF에서도 JOIN (데이터에 대해 2 루프)을 수행하게 될 것이므로 UDF를 사용하면 성능이 향상되지 않습니다. IMO, 3.6M 행을 포함하는 관계의 SelfJoin은 Hadoop에서 그리 큰 것이 아닙니다. –