Nifi:无法在 ExecuteScript 处理器中导入 pyspark
Nifi: Cannot import pyspark in ExecuteScript processor
我需要在 Nifi 中实现 ExecuteScript 以进行列转置,我正在使用 pyspark 作为实现此目的的方法。
但是问题是
"failed to process due to javax.script.ScriptExeption: ImportError: No module named pyspark in at line number 1:"
我在 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
但是没有用。
这恐怕是个很根本的问题,半天想不通..
这可能是因为 pyspark
模块是 natively-compiled Python 模块,而 Apache NiFi 使用 Jython 在 ExecuteScript
处理器中。这是一个已知问题,并且 is here, as well as some work-arounds and 。
最简单的答案是使用 ExecuteStreamCommand
并将必要的流文件属性作为参数传递,内容作为 STDIN
。 Python 脚本的输出将通过 STDOUT
返回并作为新的流文件内容捕获。
我需要在 Nifi 中实现 ExecuteScript 以进行列转置,我正在使用 pyspark 作为实现此目的的方法。
但是问题是 "failed to process due to javax.script.ScriptExeption: ImportError: No module named pyspark in at line number 1:"
我在 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
但是没有用。
这恐怕是个很根本的问题,半天想不通..
这可能是因为 pyspark
模块是 natively-compiled Python 模块,而 Apache NiFi 使用 Jython 在 ExecuteScript
处理器中。这是一个已知问题,并且
最简单的答案是使用 ExecuteStreamCommand
并将必要的流文件属性作为参数传递,内容作为 STDIN
。 Python 脚本的输出将通过 STDOUT
返回并作为新的流文件内容捕获。