Intelligent Cache 會在幕後無縫運作,並快取資料,以協助 Spark 從您的 ADLS Gen2 資料湖讀取資料時加快執行速度。 它也會自動偵測基礎檔案的變更,並會自動重新整理快取中的檔案,提供您最新的數據,以及快取大小達到其限制時,快取會自動釋放最少的讀取數據,以便為最近的數據提供空間。 對於儲存在可用快取中的檔案,此功能可在後續讀取時,將 Parquet 檔案的效能最多提升 65%,CSV 檔案最多提升 50%,從而降低總持有成本。
從數據湖查詢檔案或數據表時,Synapse 中的 Apache Spark 引擎會呼叫遠端 ADLS Gen2 記憶體以讀取基礎檔案。 每次查詢要求讀取相同的資料時,Spark 引擎必須呼叫遠端 ADLS Gen2 儲存空間。 此備援進程會增加處理時間總計的延遲。 Spark 提供快取功能,您必須手動設定快取並釋放快取,以將延遲降到最低,並改善整體效能。 不過,如果基礎數據變更,這可能會導致結果有過時的數據。
Synapse Intelligent Cache 會在每個 Spark 節點上,於已配置的快取儲存空間內,自動快取每次讀取,以簡化此程序。 每個檔案要求都會檢查檔案是否存在於快取中,並比較來自遠端記憶體的標籤,以判斷檔案是否過時。 如果檔案不存在,或檔案過時,Spark 會讀取檔案並將它儲存在快取中。 當快取滿時,具有最舊上次存取時間的檔案將會從快取收回,以允許較新的檔案。
Synapse 快取在每個節點上只有一個快取。 如果您使用中型節點,並在單一中型節點上搭配兩個小型執行程序執行,這兩個執行程式會共用相同的快取。
啟用或停用快取
您可以根據每個 Apache Spark 集區可用磁碟大小的百分比來調整快取大小。 根據預設,快取為停用狀態,但只要將滑桿從 0 (已停用) 移動到您想要的快取大小百分比,就能輕鬆啟用。 我們會保留至少 20% 的可用磁碟空間,供資料洗牌使用。 針對混排密集的工作負載,您可以將快取大小降到最低或停用快取。 我們建議從 50% 的快取大小開始,並視需要調整。 請務必注意,如果您的工作負載需要本機 SSD 上的大量磁碟空間來進行隨機或 RDD 快取,請考慮減少快取大小,以減少因記憶體不足而失敗的機會。 可用記憶體的實際大小和每個節點上的快取大小將取決於節點系列和節點大小。
為新的 Spark 集區啟用快取
建立新的 Spark 集區時,請在 [其他設定] 頁面中尋找 [智慧型快取 滑桿],您可以調整至所需大小以啟用此功能。
為現有 Spark 集區啟用/停用快取
若為現有的 Spark 集區,請瀏覽至您所選 Apache Spark 集區的延展設定,將滑桿移至大於 0 的值即可啟用,或將滑桿移至 0 以停用。
變更現有 Spark 集區的快取大小
若要變更集區的 Intelligent Cache 大小,且該集區有作用中的工作階段,您必須強制重新啟動。 如果 Spark 集區有作用中的工作階段,則會顯示強制使用新設定。 按兩下 複選框 ,然後選取 [ 套用 ] 以自動重新啟動工作階段。
在會話中啟用和停用快取
輕鬆停用會話內的智慧快取,方法是在筆記本中執行下列程式碼:
%spark
spark.conf.set("spark.synapse.vegas.useCache", "false")
%pyspark
spark.conf.set('spark.synapse.vegas.useCache', 'false')
並通過執行以下命令來啟用:
%spark
spark.conf.set("spark.synapse.vegas.useCache", "true")
%pyspark
spark.conf.set('spark.synapse.vegas.useCache', 'true')
何時應使用 Intelligent Cache,何時不應使用?
如果以下條件符合,這項功能將對您有利:
您的工作負載需要多次讀取相同的檔案,而且檔案大小可以放入快取中。
您的工作負載使用 Delta 數據表、parquet 檔格式和 CSV 檔案。
您在 Azure Synapse 上使用 Apache Spark 3 或更高版本。
如果下列情況,您將不會看到這項功能的優點:
您正在讀取超過快取大小的檔案,因為檔案的開頭可能會被淘汰,後續查詢將不得不從遠端儲存器重新擷取數據。 在此情況下,您不會看到智慧快取的任何優點,而且您可能想要增加快取大小和/或節點大小。
您的任務量需進行大量資料重新分配,停用智能快取將釋放更多可用空間,以防止您的作業因儲存空間不足而失敗。
您使用的是Spark 3.3集區,您必須將集區升級至最新版本的Spark。
瞭解更多資訊
若要深入瞭解 Apache Spark,請參閱下列文章:
若要了解如何設定 Spark 工作階段設定
後續步驟
Apache Spark 集區提供開放原始碼巨量數據計算功能,可以載入、模型化、處理和分發數據,以加速分析洞察。 若要深入瞭解如何建立以執行 Spark 工作負載的環境,請查看下列教學課程: