Pyspark - WARN BisectingKMeans:输入RDD不直接缓存

时间:2017-08-14 22:12:36

标签: pyspark spark-dataframe apache-spark-mllib apache-spark-ml

我正在运行二等分kmeans

bkm_test=BisectingKMeans().setK(5).setSeed(1)

rdf.cache()
assembled.cache()
model_test=bkm_test.fit(assembled)

我缓存了两个数据帧,因为我不断收到错误,但它没有什么区别,我发现这个question与kmeans相似。 但我也在下面得到一个WARN Executor错误。这只是我无法修复的算法内部的东西吗?

17/08/14 21:53:17 WARN BisectingKMeans: The input RDD 306 is not directly cached, which may hurt performance if its parent RDDs are also not cached.
17/08/14 21:53:17 WARN Executor: 1 block locks were not released by TID = 132:
[rdd_302_0]

1 个答案:

答案 0 :(得分:0)

这来自BisectingKMeans within MLlibSpark ML uses internally。 MLlib使用向量的RDD,而Spark ML是面向DataFrame的,因此BisectingKMeans converts your DataFrame into an RDD of Vector values的ML版本。转换未缓存,因此您最终会收到错误消息。

希望这不是一个严重的放缓。我还没有找到一种简单的方法来强制缓存转换后的RDD。