2016-06-21 4 views
0

저는 PIG의 초보자이고 문제가 있습니다. 나는 그것이 가능한지 모른다. ?을 File1 (A)을 File2 (B) 파일은 File3 (C) File4 (- :PIG : 많은 파일에서 연구합니다.

(A, B, C, D) : 모든

주먹,이 가진 파일이 A, B), File5 (A, C), File6 (C, B), File7 (A, D).

내가 파일 매개 변수에 각 항목, 연구, 돼지에서 스크립트를 작성이 파일을 복용하고 있습니다 ... 예를 들어

이 하나의 스크립트는에있다 File1, File2B, File3C에서 매개 변수 A를 찾으십시오.

그러나 얼마나 많은 파일이 있는지 모르겠습니다. 그들은 하나의 매개 변수 또는 2 만 가질 수 있습니다.

나는이 파일들을 쉽게로드 할 수 있으며, 모두 2 개의 열을 가지고 있습니다. ('')와 같은 (COL1 : chararray, Col2의 : chararray) 각 파일 {

A =로드 '가 filex'사용 PigStorage 들어

;

B = Col1에 의한 필터 A == X 및 Col2 == Y;

저장 B '결과'는 PigStorage ('');

}

코드의 유형은 가능합니까?

두 번째 방법으로 동일한 매개 변수를 사용하여 파일을 다시 그룹화하려고합니다. 그룹을 통해 File1, File5 및 File7의 경우 ... 같은 필터링을 사용하지 않으려면 다음을 수행하십시오. 많은 테스트를 해봤지만 유용한 것은 없습니다. 감사합니다.

+0

가 할 수있는 다음 쉘

에서이 돼지 스크립트를 호출

A = load '$inputfile' using PigStorage (':') as (Col1:chararray, Col2:chararray); B = filter A by Col1 == X AND Col2== Y; STORE B INTO 'result' using PigStorage(' '); 

같이해야합니까? –

+0

예, Hdfs에도 있습니다. – Nabcool

답변

0

이 코드 유형이 있습니까?

아니요, 돼지는 데이터 흐름에 불과하며 제어 흐름이 없습니다.

돼지 라틴어는 데이터 흐름 언어입니다. 범용 프로그래밍 언어와 달리, if 및 과 같은 제어 흐름 구문은 포함되지 않습니다. ref.

유동 제어를 활성화하기 위해 돼지 스크립트를 파이썬 자바 또는 자바 스크립트 스크립트에 삽입 할 수 있습니다 (here 참조).

+0

감사합니다. 돼지 스크립트에 자바 스크립트를 통합하는 방법을 정말 이해하지 못합니다.하지만 시도하겠습니다! 동일한 스크립트에서 모두를 재편성 할 수 있습니까? 아니면 내가 만든 두 스크립트 (나는 한 돼지와 자바에서 다른 하나를 뜻?) – Nabcool

+0

당신은 단 하나의 자바 프로그램을 얻을 것이다, 위의 링크를 확인하십시오. – 54l3d

0

여기에는 쉘 스크립트와 돼지가 결합되어있을 수 있습니다.

귀하의 돼지 스크립트는 첫 번째 파일이 HDFS도

for a in `hadoop fs cat <firstfile> | awk -F "," '{print $0}'` 
do 
pig -f script.pig -param inputfile=$a 
done 
+0

그러나 단 하나의 매개 변수 만 있으면 작동하지 않습니다. 맞습니까? 그리고 이걸로 sames 매개 변수에 연결할 수 없습니다. – Nabcool