2011-09-26 6 views
4

돼지를 사용하여 처리하려는 100 개의 열이있는 hdfs 파일이 있습니다. 별도의 돼지 스크립트에 열 이름이있는 튜플에이 파일을로드하고 다른 돼지 스크립트에서이 스크립트를 다시 사용하려고합니다. 어떻게해야합니까?다른 돼지 스크립트 내에서 돼지 스크립트를 호출하는 방법

이 100 개의 돼지 스크립트는 - 100col.pig입니다. 내가 어떻게 그것을 다른 사람에게서 부르지. 피그?

답변

5

exec 명령 (배치 처리 용) 또는 run 명령 (대화 형 스크립트 용)을 확인하십시오. 또한 (쓸데없는) 셸 명령을 사용해야하는 경우 fs 명령을 확인하십시오. 여기에 좋은 참고는 다음과 같습니다

http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html

+0

실행 명령이 그랬습니다! 내 두 번째 스크립트에서 100col.pig에 정의 된 변수를 사용할 수 있기를 원하기 때문에 exec가 작동하지 않습니다. RUN 해냈어. 감사! – hese

+0

힌트로'RUN'은 추가적인 부작용이 있습니다; 'RUN' 대'EXEC'에 대해 더 자세히 설명하는 [this later SO Answer] (http://stackoverflow.com/a/20636781/3562032)를 참조하십시오. –

1

여기서 2 가지 옵션이있다. 돼지는 실행 및 실행 명령을 제공하여 요구 사항을 해결합니다.

exec 명령은 부적절한 돼지 스크립트를 호출하고 독립 실행 형으로 실행하기위한 것입니다. 실행 명령은 pigscipt를 실행하고 변수 및 별칭을 보존하기위한 것입니다.

귀하의 요구 사항을 충족시키기 위해 실행 명령을 확인해야한다고 가정합니다. http://pig.apache.org/docs/r0.9.1/cmds.html#run

2

그것 늦게 답변 조금,하지만 최근 이러한 요구 사항에 노력하고 도움을 거의 아무것도 발견, 나는이 발견 될 때까지이 필요로하는 사람을 도움이되기를 바랍니다했다 :

**이 발췌입니다 프로그래밍 돼지 책에서 찍은.

오랜 기간 동안 돼지 라틴어로 된 전체 스크립트는 하나의 파일에 있어야했습니다. 이것은 다소 불쾌한 멀티 칩 라인의 돼지 라틴어 스크립트를 만들어 냈습니다. 0.9부터는 프리 프로세서 을 사용하여 다른 하나의 Pig Latin 스크립트를 포함 할 수 있습니다. 매크로와 함께, 디버그 및 재사용을 쉽게 모듈 돼지 라틴어를 쓸 수있게되었습니다 : 가져 오기 다른 한 돼지 라틴어 스크립트를 포함하는 데 사용됩니다

--main.pig을

import '../examples/ch6/dividend_analysis.pig'; 
daily = load 'NYSE_daily' as (exchange:chararray, symbol:chararray, 
date:chararray, open:float, high:float, low:float, close:float, 
volume:int, adj_close:float); 
results = dividend_analysis(daily, '2009', 'symbol', 'open', 'close'); 

import 가져 오기 파일을 import 문 대신 Pig 라틴어 스크립트에 직접 씁니다. 앞의 예에서 dividend_analysis.pig의 내용은 이 load 문 바로 앞에 놓입니다. 파일을 두 번 가져올 수 없습니다. 동일한 기능을 여러 번 사용하려면 매크로로 작성하고 해당 매크로로 파일을 가져와야합니다.