"ImportError: No module named sklearn" when --deploy-mode is cluster

"ImportError: No module named sklearn" when --deploy-mode is cluster

我写了下面的pyspark代码。

from pyspark.sql import SparkSession
import sys
import sklearn

spark = SparkSession.builder.getOrCreate()
sc = spark.sparkContext

print (sys.version_info)

当我 运行 与:

spark-submit --master yarn --deploy-mode client test.py

它正确执行。但是,当我将 --deploy-mode 更改为“集群”时,即:

spark-submit --master yarn --deploy-mode cluster test.py

我看到以下错误。我不知道为什么会这样,我该如何解决。

ImportError: No module named sklearn

我看过。但这对我没有帮助。

--deploy-mode client 将使用您提交 Spark 应用程序的当前机器作为驱动程序,显然该机器安装了 sklearn 包。但是,--deploy-mode cluster 会从可用资源中随机选择一个驱动程序,因此您事先不知道哪台机器将成为驱动程序,其中一台可能没有安装 sklearn 包,因此您会遇到错误。所以解决方案是在集群中的所有可用节点中安装 sklearn 包