【发布时间】:2020-07-04 23:08:34
【问题描述】:
我们分发使用 Spark 的 Python 应用程序以及 Python 3.7 解释器(python.exe 以及所有必需的库位于 MyApp.exe 附近)。
要设置PYSPARK_PYTHON,我们有一个函数可以确定python.exe的路径:
os.environ['PYSPARK_PYTHON'] = get_python()
在 Windows 上 PYSPARK_PYTHON 将变为 C:/MyApp/python.exe
在 Ubuntu 上 PYSPARK_PYTHON 将变为 /opt/MyApp/python.exe
我们启动主/驱动节点并在 Windows 上创建SparkSession。然后我们在 Ubuntu 上启动工作节点,但工作节点失败:
Job aborted due to stage failure: Task 1 in stage 11.0 failed 4 times, most recent failure: Lost task 1.3 in stage 11.0 (TID 1614, 10.0.2.15, executor 1): java.io.IOException: Cannot run program "C:/MyApp/python.exe": error=2, No such file or directory
当然,ubuntu 上没有C:/MyApp/python.exe。
如果我正确理解此错误,来自驱动程序的PYSPARK_PYTHON 将发送给所有工作人员。
还尝试在spark-env.sh 和spark-defaults.conf 中设置PYSPARK_PYTHON。如何将 Ubuntu 工作人员的 PYSPARK_PYTHON 更改为 /opt/MyApp/python.exe?
【问题讨论】:
-
只有一台Windows机器吗? Windows 机器上的 Spark 主服务器是否也托管执行程序?如果答案分别是yes和no,你也可以尝试在Ubuntu节点上运行master。
-
在 Windows 机器上我启动 master 和 worker。仅在 Ubuntu 上工作。
标签: python apache-spark ubuntu pyspark environment-variables