2016-12-16 60 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);