我正在运行平分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。