Apache Spark Python 到 Scala 的翻译
Apache Spark Python to Scala translation
如果我做对了,Apache YARN 将 Application Master 和 Node Manager 作为 JAR 文件接收。它们在 YARN 集群的节点上作为 Java 进程执行。
当我使用 Python 编写 Spark 程序时,它是否以某种方式编译成 JAR?
如果不是,为什么 Spark 能够在 YARN 集群节点上执行 Python 逻辑?
PySpark 驱动程序使用 Py4J (http://py4j.sourceforge.net/) 启动 JVM 并创建 Spark 上下文。 Python 中编写的 Spark RDD 操作映射到 PythonRDD 上的操作。
在远程工作者上,PythonRDD 启动 运行 Python 的子流程。数据和代码使用管道从远程工作者的 JVM 传递到其 Python 子进程。
因此,您的 YARN 节点必须安装 python 才能正常工作。
python 代码未编译为 JAR,而是使用 Spark 分布在集群中。为了使这成为可能,使用以下代码 https://github.com/apache/spark/blob/master/python/pyspark/cloudpickle.py
对 Python 中编写的用户函数进行 pickle
来源:https://cwiki.apache.org/confluence/display/SPARK/PySpark+Internals
如果我做对了,Apache YARN 将 Application Master 和 Node Manager 作为 JAR 文件接收。它们在 YARN 集群的节点上作为 Java 进程执行。 当我使用 Python 编写 Spark 程序时,它是否以某种方式编译成 JAR? 如果不是,为什么 Spark 能够在 YARN 集群节点上执行 Python 逻辑?
PySpark 驱动程序使用 Py4J (http://py4j.sourceforge.net/) 启动 JVM 并创建 Spark 上下文。 Python 中编写的 Spark RDD 操作映射到 PythonRDD 上的操作。
在远程工作者上,PythonRDD 启动 运行 Python 的子流程。数据和代码使用管道从远程工作者的 JVM 传递到其 Python 子进程。
因此,您的 YARN 节点必须安装 python 才能正常工作。
python 代码未编译为 JAR,而是使用 Spark 分布在集群中。为了使这成为可能,使用以下代码 https://github.com/apache/spark/blob/master/python/pyspark/cloudpickle.py
对 Python 中编写的用户函数进行 pickle来源:https://cwiki.apache.org/confluence/display/SPARK/PySpark+Internals