2016-12-16 4 views
1

XML 파일을 입력으로 사용하고 일부 UDF를 실행 한 후 내 파일에서 자식 노드 중 하나에 대한 값을 모두 반환하는 돼지 스크립트를 작성하려고합니다.XPathAll 및 Python UDF를 사용하여 돼지 스크립트

REGISTER 'piggybank-0.15.0.jar'; 
REGISTER 'function.py' USING streaming_python as myFunc; 
DEFINE XPathAll org.apache.pig.piggybank.evaluation.xml.XPathAll(); 
A = LOAD 'file.xml' using org.apache.pig.piggybank.storage.XMLLoader('Parent') as (x:chararray); 
B = FOREACH A GENERATE XPathAll(x, 'Parent/Child', true, true) as (y:tuple); 
C = FOREACH B myFunc.func(y); 
DUMP C; 

내가 UDF를 호출하려고 후 다음과 같은 오류가 점점 오전 :

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 10, column 14> Syntax error, unexpected symbol at or near 'myFunc' 

주 : 이것은 내가 실행하고 스크립트 내가 튜플로 설정하지 않고 B를 설명하면, 내가 얻을 결과 B : {()}. myFunc에게 잘못된 것을 부르겠습니까? B에서 myFunc로 줄을 전달하는 방법을 알아낼 수 없습니다.

답변

0

foreach에 generate 키워드가 누락되었다고 생각합니다.

당신은 다음과 같이 코드를 변경 시도 할 수

C = FOREACH B GENERATE myFunc.func(y);