我正在为我的猪项目开发一些python UDF。 在第一种方式中,我更喜欢cPython而不是Jython,因为我想使用一些成熟的 像python中的numpy这样的库很顺利。
以下是我的pyudf.py
文件中的代码片段:
from pig_util import outputSchema
import numpy as np
@outputSchema("T:double")
def std(input):
input2 = [float(t[0]) for t in input]
return np.std(input2)
在pig脚本中,我首先在命令:
上面注册python模块Register 'pyudf.py' using streaming_python as myfuncs;
然后我可以在下面的部分中调用UDF:
myfuncs.std(..)
整个工作流程可以在桌面上安装的Apache pig(1.2.1)中无错误地向前移动。
但是当我在CDH平台上运行相同的代码时,猪抱怨streaming_python
:
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2997: Encountered IOException. Could not load ScriptEngine: streaming_python for streaming_python (Supported langs: [javascript, jython, groovy, jruby]) : java.lang.ClassNotFoundException: streaming_python
有人知道CDH如何与streaming_python或任何其他解决方案一起使用?
提前致谢!
Jamin--chenxm35@gmail.com