我需要在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
但这没用。
恐怕这是一个非常根本的问题,无法解决半天。
答案 0 :(得分:2)
这可能是因为pyspark
模块是本地编译的 Python模块,而Apache NiFi在ExecuteScript
处理器中使用了 Jython 。这是一个已知问题,full explanation以及一些work-arounds和details on options在这里。
最简单的答案是使用ExecuteStreamCommand
并将必要的流文件属性作为参数传递,并将内容作为STDIN
传递。 Python脚本的输出将通过STDOUT
返回并捕获为新的流文件内容。