Nifi:无法在ExecuteScript处理器中导入pyspark

时间:2019-05-27 06:22:07

标签: apache-spark import pyspark jython apache-nifi

我需要在Nifi中实现ExecuteScript才能进行列转置,并且我正在使用pyspark作为实现此目的的方法。

但问题是 “由于javax.script.ScriptExeption:无法处理:ImportError:在第1行没有名为pyspark的模块”

我为ExecuteScript属性中的模块目录设置设置了spark和pyspark的路径。

C:\Users\username\Desktop\spark\spark-2.4.3-bin-hadoop2.7\hadoop,
C:\Users\username\Desktop\spark\spark-2.4.3-bin-hadoop2.7\bin\pyspark

但这没用。

恐怕这是一个非常根本的问题,无法解决半天。

1 个答案:

答案 0 :(得分:2)

这可能是因为pyspark模块是本地编译的 Python模块,而Apache NiFi在ExecuteScript处理器中使用了 Jython 。这是一个已知问题,full explanation以及一些work-aroundsdetails on options在这里。

最简单的答案是使用ExecuteStreamCommand并将必要的流文件属性作为参数传递,并将内容作为STDIN传递。 Python脚本的输出将通过STDOUT返回并捕获为新的流文件内容。