2016-12-16 13 views
1

Я пытаюсь написать скрипт Pig, который принимает XML-файл в качестве ввода и возвращает все значения для одного из дочерних узлов в моем файле после запуска некоторого UDF. Это сценарий, я бегу:Сценарий Pig с использованием 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.

Вы можете попробовать изменить свой код, как показано ниже:

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

 Смежные вопросы

  • Нет связанных вопросов^_^