Pyspark - WARN 平分KMeans:输入RDD不直接缓存



我正在运行平分kmeans作为

bkm_test=BisectingKMeans().setK(5).setSeed(1)
rdf.cache()
assembled.cache()
model_test=bkm_test.fit(assembled)

当我不断收到错误时,我缓存了两个数据帧,但这没有区别,我发现这个问题相似但带有 kmeans。 但是我也在下面收到警告执行器错误。这只是算法中我无法修复的内容吗?

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]

这来自 MLlib 中的 BisectingKMeans,Spark ML 在内部使用。MLlib 使用矢量的 RDD,而 Spark ML 是面向 DataFrame 的,因此 BisectingKMeans 的 ML 版本会将您的数据帧转换为矢量值的 RDD。转换未缓存,因此您最终会收到错误。

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

最新更新