優化性能和緩存數據磚

磚使用磁盤緩存來加快創建遠程鋪數據的副本文件讀取的數據節點的本地存儲中間數據格式使用快。數據緩存自動當一個文件從遠程獲取。連續讀取相同的數據然後在本地執行,從而顯著提高閱讀速度。緩存適用於所有鋪數據文件(包括三角洲湖表)。

δ緩存重新命名為磁盤緩存

磁盤緩存數據磚曾稱為δ緩存和DBIO緩存。磁盤緩存行為是一個專有的磚的特性。這個名字改變尋求解決困惑,三角洲湖協議的一部分。與這重命名行為保持不變,描述如下。

自動和手動緩存

磚磁盤緩存不同於Apache火花緩存。磚建議使用自動磁盤緩存對於大多數操作。

當啟用了磁盤高速緩存,數據需要從遠程數據源獲取自動添加到緩存中。這個過程是完全透明,不需要任何行動。然而,事先預加載數據到緩存,您可以使用緩存選擇命令(見緩存數據的一個子集)。當你使用火花緩存,您必須手動指定緩存表和查詢。

遠程數據的磁盤高速緩存包含本地副本。它可以提高廣泛的查詢的性能,但不能用於存儲任意子查詢的結果。火花緩存可以存儲任何子查詢的結果數據和數據存儲在拚花以外的其他格式(如CSV、JSON和獸人)。

磁盤緩存中存儲的數據可以讀取和操作速度比火花緩存中的數據。這是因為磁盤緩存使用高效的壓縮算法和最優輸出數據格式使用舞台代碼生成進行進一步的處理。

與火花緩存,磁盤緩存不使用係統內存。由於現代ssd的閱讀速度,較高的磁盤緩存可以完全於磁盤上沒有對其性能產生負麵影響。

總結

下表總結了關鍵差異磁盤和Apache火花緩存,這樣你可以選擇最好的工具來你的工作流程:

功能

磁盤高速緩存

Apache火花緩存

存儲為

一個工人節點上本地文件。

內存塊,但這取決於存儲水平。

應用於

任何拚花表存儲在GCS和其他文件係統。

任何DataFrame或抽樣。

觸發

自動,第一次讀到(如果啟用了緩存)。

手動,需要更改代碼。

評估

懶洋洋地。

懶洋洋地。

力緩存

緩存選擇命令

.cache+實現緩存和任何行動.persist

可用性

與配置旗幟,可以啟用或禁用默認啟用特定節點類型。

總是可用的。

驅逐

自動在LRU時尚或任何文件變化,手動重新啟動集群。

自動在LRU時尚,手動unpersist

磁盤高速緩存一致性

磁盤緩存時自動檢測數據文件創建、刪除、修改或覆蓋,並相應地更新其內容。您可以編寫、修改和刪除表數據不需要顯式地緩存數據失效。任何過期條目自動失效並驅逐出緩存。

使用磁盤緩存

磁盤緩存默認情況下所有的工作當地的ssd的實例類型

實例類型,支持磁盤緩存,磚自動啟用磁盤緩存集群實例類型和配置適當的緩存大小。

磁盤緩存配置為使用最多一半的可用空間在本地工人提供的ssd節點。配置選項,請參閱配置磁盤高速緩存

緩存數據的一個子集

顯式地選擇一個子集的數據緩存,使用下麵的語法:

緩存選擇column_name(,column_name,…](db_name)table_name(在哪裏boolean_expression]

您不需要使用該命令磁盤高速緩存的正常工作(數據將首次訪問時自動緩存)。但是它是很有用的,當你需要一致的查詢性能。

例子和更多的細節,請參閱

配置磁盤高速緩存

緩存的磁盤使用情況自動設置在與當地ssd實例類型。磚建議你不顯式地設置緩存磁盤使用情況。

請注意

當工人退役,火花緩存存儲在職工失去。如果啟用了自動定量,有一些不穩定的緩存。火花會根據需要從源代碼需要重讀丟失的分區。

配置磁盤使用情況

配置磁盤緩存如何使用工作節點的本地存儲,指定以下火花配置設置集群創建期間:

  • spark.databricks.io.cache.maxDiskUsage:每個節點的磁盤空間用於緩存數據字節

  • spark.databricks.io.cache.maxMetaDataCache:每個節點的磁盤空間用於緩存元數據字節

  • spark.databricks.io.cache.compression.enabled:緩存的數據應該存儲在壓縮格式

示例配置:

spark.databricks.io.cache.maxDiskUsage50gspark.databricks.io.cache.maxMetaDataCache1gspark.databricks.io.cache.compression.enabled假

啟用或禁用磁盤緩存

磁盤緩存默認情況下所有的工作當地的ssd的實例類型

啟用和禁用磁盤緩存,運行:

火花相依(“spark.databricks.io.cache.enabled”,“真|假”)

禁用緩存不會導致下降已經存在於本地存儲的數據。相反,它可以防止查詢添加新的數據緩存和從緩存中讀取數據。