从 Scala Spark 代码调用 Pyspark 脚本

Invoking Pyspark script from Scala Spark Code

我有一个 Scala Spark 应用程序,想调用 pySpark/python (pyspark_script.py) 进行进一步处理。

Python 中有多个资源可以使用 Java/Scala 代码,但我正在寻找 scala->Pyspark

我探索了 Jython Scala/Java 以包含 Python 代码如下:

PythonInterpreter.initialize(System.getProperties, properties, sysArgs)
val pi = new PythonInterpreter()
pi.execfile("path/to/pyscript/mypysparkscript.py")

我看到错误提示:“ImportError:没有名为 pyspark 的模块”

有什么方法可以让 Scala spark 与 PYSpark 使用相同的 sparkContext/session 通信吗?

您可以使用 process 对象在 Scala 中 运行 shell 命令。

// Spark codes goes here .....
// Call pyspark code 
import sys.process._
"python3 /path/to/python/file.py.!!

要使用相同的会话,请将以下行添加到 python 文件。

spark = SparkSession.builder.getOrCreate()

您也可以使用 getActiveSession() 方法。

注意:确保安装了 pyspark 模块。 您可以使用 pip3 install pyspark 命令来做到这一点。