取消
顯示的結果
而不是尋找
你的意思是:

無法清楚緩存使用pyspark會話

maartenvr
新的貢獻者三世

你好,

我使用一個持續呼籲火花dataframe內部應用程序加速計算。dataframe使用在我的應用程序和應用程序的最後我想要清除緩存整個火花的會話通過調用明確引發會話緩存。然而,我無法清除緩存。

沿著這些線路的事情發生了:

#從pyspark Python代碼。.getOrCreate sql進口SparkSession火花= SparkSession.builder.config()() #隻是一個例子df = spark.read.csv (example.csv) df.cache() #清理緩存spark.catalog.clearCache ()

clearCache命令並不做任何事和緩存仍然是可見的火花UI。(磚- > SparkUI - >存儲。)

下麵的命令也不顯示任何持久的抽樣的,雖然在現實中存儲在UI中顯示多個緩存的抽樣。

#從pyspark Python代碼。sql進口SQLContext spark_context =火花。_sc sql_context = SQLContext (spark_context) spark._jsc.getPersistentRDDs() #結果:{}

正確的方法是什麼引發會話/火花的清除緩存集群?

規格:我在Databrick運行時10.4 LST和前後一致地使用databricks-connect = = 10.4.18我。

1接受解決方案

接受的解決方案

匿名
不適用

clearCache@Maarten van Raaij:

clearCache後原因調用unpersist () () - >

當你叫spark.catalog.clearCache(),它清除所有緩存的緩存表和DataFrames火花。然而,重要的是要注意,clearCache ()

方法隻刪除相關的元數據緩存表和DataFrames,而不是實際的緩存數據本身。實際的緩存數據保持在內存中,直到它是驅逐由於內存壓力或直到它顯式地使用unpersist unpersisted()方法。

在原帖子查看解決方案

9回複9

匿名
不適用

@Maarten van Raaij:請嚐試以下和實驗的選項:

  1. 你能嚐試使用命令sparkContext () .getOrCreate () .getCache () .clear()方法。這種方法清空緩存的所有抽樣(彈性分布式數據集)和它們的關聯元數據從內存中緩存
  2. 旁白,如果上麵不工作,這意味著DataFrame太大了,適合內存溢出到磁盤。作為一個解決方案,增加可用內存的火花,或優化你的代碼來減少DataFrame的大小
  3. 旁白,如果上麵不工作,DataFrame被其他DataFrames或引用的對象沒有unpersisted。作為一個解決方案,您將需要unpersist所有引用DataFrame才能明確其緩存

Vidula_Khanna
主持人
主持人

嗨@Maarten van Raaij

希望一切進行得很順利。

隻是想檢查如果你能解決你的問題。如果是的,你會很高興的答案標記為最好,其他成員可以找到解決方案更快嗎?如果不是,請告訴我們,我們可以幫助你。

幹杯!

maartenvr
新的貢獻者三世

沒有解決方案:

嗨@Suteja卡努裏人,

感謝您的考慮和回複!

然而不幸的是,我還沒有找到一個解決方案。

  1. 我得到一個錯誤,不存在‘‘.getCache() ' ' '方法火花上下文。注意,我也想做一些類似的事情通過使用' ' ' sql_context.clearCache() ' ' '而不能正常工作。
  2. 這並非如此。所有數據在內存中是持久(根據SparkUI)
  3. 這可能是這個問題。使用dataframe在我的應用程序來計算其他dataframes。由於堅持dataframe是通過應用程序和使用在不同的範圍非常困難/麻煩unpersist所有dataframes參照原persistend dataframe。這就是為什麼我試圖清晰完整的緩存集群。

除了這些點,我也很好奇為什麼緩存出現在我SparkUI和應用計算時使用的數據,但我不能得到持久抽樣的當我使用sql_context。(最後一個代碼塊在早前發布的文章)。

有什麼其他的想法我可以試試嗎?

親切的問候,

Maarten

匿名
不適用

@Maarten van Raaij:

  • 關於錯誤的“getCache() ' ' - >你收到的錯誤消息表明,火花上下文沒有.getCache()方法。這可能是因為該方法棄用。相反,你可以試著使用SparkSession.catalog.clearCache ()清除緩存數據的方法。

例子:

從pyspark。sql進口SparkSession #創建一個火花會話火花= SparkSession.builder.appName(“中”).getOrCreate() #緩存DataFrame df = spark.read.csv (data.csv) df.cache () # spark.catalog.clearCache清除緩存()從記憶# unpersist DataFrame df.unpersist ()

注意DataFrame上的緩存()方法用於在內存中緩存數據。unpersist()方法用於將數據從內存後不再需要。

  • 為什麼sparkUI緩存必須出現

有可能您正在使用錯誤的火花上下文訪問緩存的抽樣。如果緩存使用SparkContext抽樣對象,您需要使用相同的對象檢索緩存的抽樣後。類似地,如果您使用的緩存DataFrame SparkSession對象,您需要使用相同的對象檢索緩存DataFrame之後。如果您正在使用

sql_context對象訪問緩存的抽樣,它可能無法找到緩存的抽樣,因為它是使用不同的火花上下文緩存。

Baidu
map