2016-11-03 54 views
1

我不知道为什么我收到消息PySpark 2:K均值输入数据不是直接缓存

WARN KMeans: The input data is not directly cached, which may hurt performance if its parent RDDs are also uncached. 
当我尝试使用星火K均值

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 

它说

,我的输入(数据帧)没有被缓存!

我试图打印df_Part.is_cached,我收到True这意味着我的数据帧被缓存,所以为什么火花仍然警告我这个?

预先感谢您

回答

3

o.a.s.mllib.clustering.KMeans生成此消息并没有什么可以真正了解它,而不打补丁星火代码。

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

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

在缓存DataFrame,RDD时,在内部使用的内容不会被缓存。这就是你看到警告的原因。虽然这很烦人,但我不会为此担心。

1

这已在Spark 2.2.0中修复。这里是Spark-18356

在那里的讨论也表明这不是什么大问题,但修复可能会稍微减少运行时间,以及避免警告。

+1

谢谢,那是我:)谁在https://issues.apache.org/jira/browse/SPARK-18356 – MrGildarts

+0

创建该主题哦!那么好吧。 :) – ctwardy