首页 > 解决方案 > 从 Scala Spark 代码调用 Pyspark 脚本

问题描述

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

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

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

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

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

Scala spark如何使用相同的sparkContext/session与PYSpark通信有什么办法吗?

标签: scalaapache-sparkpysparkjython

解决方案


您可以使用进程对象在 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命令来做到这一点。


推荐阅读