【发布时间】:2018-07-27 09:47:28
【问题描述】:
我正在尝试使用 spark_sklearn 中的 GridSearchCV 来加快 3 节点 spark 集群上的拟合过程。然而,当我打电话给.fit() 时,出现了一些pickle.loads(obj) 错误,我认为基本问题如下
ImportError:没有名为 sklearn.cluster.k_means_ 的模块
如果我在本地模式下提交任务,那么一切正常。似乎集群模式没有使用正确版本的 gridsearchcv 或者 sklearn 是从集群模式下的不同路径为两个工作人员导入的。有人可以帮帮我吗?
spark_sklearn:2.3.1
最相关的部分代码如下:
import spark_sklearn
from spark_sklearn import GridSearchCV
....some code for spark context, data reading and preparation....
parameters = {"n_clusters":[d/2,d],"max_iter":[100,200]}
km = KMeans(init='k-means++')
grid = GridSearchCV(sc, km, cv=5, param_grid = parameters, scoring =
silhouette)
grid.fit(X_train,y_train)
谢谢!!!
【问题讨论】:
-
你能提供你的代码吗?
-
@addmeaning 感谢您的帮助。我已经发布了代码的一些相关部分。如果需要,我可以在这里发布整个文件。
-
代码看起来不错。是不是每个节点都安装了
sklearn? -
@addmeaning 是的。我使用 conda 在所有 3 个节点上安装“scikit-learn”,版本为 0.19.1。这提醒了我在master节点上,我也曾使用pip安装scikit-learn(0.19.2),但是如果我卸载这个包,就会出现“no module named sklearn”的错误。 (所以主节点使用 pip scikit-learn 而不是 conda one)
-
如何初始化集群(从属)?独立?所有机器上的pyspark python驱动版本和路径都设置好了吗?
标签: apache-spark scikit-learn pyspark