Spark如何与CPython进行互操作?

14

我有一个使用 scala 编写的 Akka 系统,需要调用一些依赖于 PandasNumpyPython 代码,因此不能仅仅使用 Jython。我注意到 Spark 在其工作节点上使用 CPython,因此我想知道它如何执行 Python 代码以及是否存在可重用的代码。

2个回答

17

PySpark架构在此处描述:https://cwiki.apache.org/confluence/display/SPARK/PySpark+Internals

PySpark internals

正如@Holden所说,Spark使用py4j从Python访问JVM中的Java对象。但这只是一种情况-驱动程序是用python编写的(图表的左侧)

另一种情况(图表的右侧)-当Spark Worker启动Python进程并将序列化的Java对象发送到Python程序进行处理并接收输出时。 Java对象序列化为pickle格式,以便Python读取它们。

看起来您要寻找的是后一种情况。下面是一些对于您开始非常有用的Spark scala核心链接:


5

因此,Spark使用py4j在JVM和Python之间进行通信。这允许Spark与不同版本的Python一起工作,但需要将数据从JVM串行化并反之以进行通信。有关py4j的更多信息,请访问http://py4j.sourceforge.net/,希望这能帮到您 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接