PySpark 2:KMeans输入数据不直接缓存

MrG*_*rts 3 python k-means apache-spark apache-spark-sql pyspark

我不知道为什么收到这条消息

WARN KMeans: The input data is not directly cached, which may hurt performance if its parent RDDs are also uncached.
Run Code Online (Sandbox Code Playgroud)

当我尝试使用Spark时 KMeans

df_Part = assembler.transform(df_Part)    
df_Part.cache()
while (k<=max_cluster) and (wssse > seuilStop):
                    kmeans = KMeans().setK(k)
                    model = kmeans.fit(df_Part)
                    wssse = model.computeCost(df_Part)
                    k=k+1
Run Code Online (Sandbox Code Playgroud)

它说我的输入(Dataframe)没有被缓存!

我试图打印df_Part.is_cached并收到True,这意味着我的数据帧被缓存了,那么为什么Spark仍然警告我这个呢?

use*_*411 5

此消息是由生成的o.a.s.mllib.clustering.KMeans,如果不修补Spark代码,您就无法真正了解它.

内部o.a.s.ml.clustering.KMeans:

  • 转换DataFrameRDD[o.a.s.mllib.linalg.Vector].
  • 执行o.a.s.mllib.clustering.KMeans.

缓存时DataFrame,RDD内部使用的缓存不会缓存.这就是你看警告的原因.虽然很烦人但我不会太担心它.