2013-01-23 2 views
0

내가 생각할 수있는 모든 순열을 시도했지만 작동하도록 CONCAT을 얻을 수 없습니다. Hadoop 돼지 라틴어, CONCAT 함수가 실패합니다.

내가하려고하면 :

가짜 = 부하 CONCAT ('foo는', '바');

난 다음 얻을 :

2013년 1월 17일 12 : 41 : 44443 [주] 에러 org.apache.pig.tools.grunt.Grunt - ERROR 1200 : 일치 입력 'CONCAT'

을 QUOTEDSTRING 기대

필자는 작동하지 않을 것으로 예상되는 큰 따옴표를 시도했지만 실제로 그렇지 않습니다. 스크립트에 매개 변수를 전달하고 CONCAT을 사용하여 동일한 오류가 발생했습니다.

동기를 부여하기 위해 결과 파일을 원하는 위치에 따라 다양한 하위 출력 디렉토리로 연결되는 기본 출력 디렉토리를 지정하려고합니다.

BTW, 나는 또한 시도 :

가짜 = LOAD 'foo는'+ '바';

즉, CONCAT을 사용하지 않습니다.

pig-0.10.1.jar를 사용하고 있습니다. 이건 최신 버전이라고 생각합니다.

+0

음, 오류가 무슨 잘못을 알려줍니다. http://pig.apache.org/docs/r0.8.1/piglatin_ref2.html#LOAD에 명시된 바와 같이 (단일) 인용 문자열을 'LOAD'로 제공해야합니다. – Seismoid

+0

맞아요, 제가 상점에서도 사용해 보았지만 이것이 내가 정말로 원했던 것입니다. 그래서 작은 따옴표로 묶인 문자열이 필요한 장소는 CONCAT이 사용될 수있는 곳이 아닌 것 같습니다. 왜 그런가요? – Jeff

답변

3

LOAD 내에서 CONCAT을 직접 호출 할 수는 없지만 실제로는 필요하지 않습니다. 스크립트에 %declare을 지정하거나 명령 행 매개 변수/매개 변수 파일을 전달하여 매개 변수 상수를 정의 할 수 있습니다. 그런 다음 $x 표기법 매개 변수를 해결할 수 있으며, 연결은 쉘 스크립트처럼 암시입니다 :

%declare FOO 'foo' 
%declare BAR 'bar' 

fake = load '$FOO$BAR'; 
+0

나는 귀하의 제안을 시도 할 것입니다 - 두 가지 질문 : 1. 나는 함축 된 의미에서 STORE로부터 CONCAT에 전화하려고합니다. 로드 또는 저장소에서 CONCAT를 호출 할 수 없지만 QUOTEDSTRING 오류를 호출하는 등의 오류가 발생했습니다. CONCAT이 STORE 내에서 작동해야합니까? 2. LOAD 내에서 CONCAT을 호출 할 수없는 이유는 무엇입니까? – Jeff

+0

감사합니다. 내가 Pig Latin에 대한 문서에 언급 된 내용이 누락되었거나 단순히 불분명한지 확실하지 않지만 '$ FOO $ BAR'과 같은 것을하면 CONCAT을 사용하지 않았다. – Jeff

관련 문제