对于Apache Pig,如何在python中编写Load UDF

时间:2013-08-19 01:59:34

标签: python jython apache-pig user-defined-functions

我想为Apache Pig编写一个Python UDF加载函数,以便我可以在Pig脚本中以下列方式使用它:

register 'myudfs.py' using jython as myfuncs;
A = load 'data' using myfuncs.myLoader() as line;

Pig documentation提供了在Java 中编写Load UDF 的一些细节,但不在Python 中。我已经设法用Python实现了非常有用的Eval函数,但我找不到任何关于如何用这种语言编写Load函数的信息。

因为我已经在Python中实现了一些Eval UDF,所以我想为所有的UDF坚持使用这种语言。

1 个答案:

答案 0 :(得分:3)

是的,这是真的。您甚至可以查看要验证的来源。请注意JythonFunction如何扩展EvalFunc而不是LoadFunc

如果我需要使用python来处理加载文件,我会这样做:

register 'myudfs.py' using jython as myudfs ;

A = LOAD 'foo.bar' AS (total:chararray) ; 
B = FOREACH A GENERATE myudf.prepare_input(total) ;

模拟sudo-LoadFunc。