scala - 从 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通信有什么办法吗?
解决方案
您可以使用进程对象在 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
命令来做到这一点。
推荐阅读
- c++ - 在链表的第 n 个位置插入一个节点
- javascript - 如何将变量分配给输入元素中的值属性?
- security - CouchDB 数据设计与安全
- javascript - 防止表单提交后重置多个具有相同名称的复选框
- javascript - 如何通过更改 id 抓取元素
- monaco-editor - monaco js 示例的浏览器脚本编辑器是自包含的吗?
- glsl - 制作发光效果 - alpha 值问题
- typescript - 为什么记录中的字段不是可选的?
- java - 无法解决错误:java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
- python - wxpython DataViewCtrl - 正确识别放置目标