【问题标题】:How does Spark interoperate with CPythonSpark如何与CPython互操作
【发布时间】:2015-08-21 11:50:16
【问题描述】:

我有一个用 scala 编写的 Akka 系统,它需要调用一些 Python 代码,依赖于 PandasNumpy,所以我不能只使用 Jython。我注意到 Spark 在其工作节点上使用 CPython,所以我很好奇它如何执行 Python 代码以及该代码是否以某种可重用的形式存在。

【问题讨论】:

    标签: scala pandas apache-spark interop pyspark


    【解决方案1】:

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

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

    另一种情况(图右侧)——Spark Worker 启动 Python 进程,将序列化的 Java 对象发送给 Python 程序进行处理,并接收输出。 Java 对象被序列化为 pickle 格式 - 因此 python 可以读取它们。

    看起来您正在寻找的是后一种情况。这里有一些指向 Spark 的 scala 核心的链接,可能对您入门很有用:

    【讨论】:

      【解决方案2】:

      所以 Spark 使用 py4j 在 JVM 和 Python 之间进行通信。这允许 Spark 使用不同版本的 Python,但需要序列化来自 JVM 的数据,反之亦然以进行通信。 http://py4j.sourceforge.net/ 有更多关于 py4j 的信息,希望对您有所帮助:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-25
        • 2013-12-31
        • 1970-01-01
        • 2013-09-23
        相关资源
        最近更新 更多