2017-07-31 115 views
1

我在DataFrame上調用cache(),我認爲它完全緩存成功,因爲在Spark UI中,我可以看到存儲選項卡中的Frsction緩存字段爲100%。但同時我看到磁盤上的大小不爲零。Spark緩存:緩存爲100%,而磁盤上的大小不爲零,爲什麼?

請注意,我在羣集(> 60GB)中有足夠的內存,DataFrame大小爲37GB,但我看到4.7GB保存在磁盤上。

這裏是我所看到的屏幕截圖:

enter image description here

我不知道爲什麼/時,這種情況下會發生什麼?

P.S.我在EMR 5.0上使用Spark 2.0.0

+0

對不起,刪除我的評論。我的第一條評論是如果你已經爲Spark分配了足夠的內存。現在,你可以嘗試'persist(MEMORY_ONLY)'並查看輸出是否有區別? – philantrovert

回答

1

因此,與RDD不同,數據集(以及我猜的DataFrame也)默認保留爲MEMORY_AND_DISK

這裏的源代碼:Dataset.scala

謝謝你問這個問題。我不知道。 :D