共用方式為


Where Azure Databricks 是否寫入數據?

本文詳述 Azure Databricks 使用日常作業和設定來寫入數據的位置。 由於 Azure Databricks 有一套工具,可跨越許多技術,並在共用責任模型中與雲端資源互動,因此用來儲存數據的預設位置會根據執行環境、組態和連結庫而有所不同。

本文中的資訊旨在協助您瞭解各種作業的預設路徑,以及組態如何改變這些預設值。 數據管理員和系統管理員想了解如何設定及控制數據存取權的指引,應查閱 Unity 的數據控管 Catalog

若要瞭解如何設定物件記憶體和其他數據源,請參閱 連線到數據源

什麼是物件記憶體?

在雲端運算中,物件記憶體或 Blob 記憶體是指將數據維護為對象的記憶體容器,每個物件都包含數據、元數據,以及全域唯一的資源 identifier(URI)。 物件記憶體資料操作作業通常僅限於透過 REST API 介面建立、讀取、更新和刪除 (CRUD)。 某些物件記憶體供應專案包含版本設定和生命週期管理等功能。 物件記憶體具有下列優點:

  • 高可用性、持久性和可靠性。
  • 相較於大多數其他記憶體選項,記憶體成本較低。
  • 可無限擴充(受限於指定雲端區域中可用的記憶體總量)。

大部分雲端式數據湖都是建立在雲端物件記憶體中 開放原始碼 數據格式之上。

Azure Databricks 如何使用物件記憶體?

物件記憶體是 Azure Databricks 用於大部分作業的主要記憶體形式。 您可以使用 Unity Catalog 記憶體 credentials 和外部位置來設定雲端物件記憶體的存取權。 這些位置接著會用來儲存備份 tables 和 volumes的數據檔。 請參閱 使用 Unity Catalog連線到雲端物件儲存和服務。

除非您特別針對外部數據系統設定 table,否則在 Azure Databricks 中建立的所有 tables 都會將資料儲存在雲端物件記憶體中。

儲存在雲端物件記憶體中的 Delta Lake 檔案為 Databricks Lakehouse 提供數據基礎。

什麼是區塊記憶體?

在雲端運算中,區塊記憶體或磁碟記憶體是指對應於傳統硬碟(HDD)或固態硬碟(SSD)的記憶體 volumes,也稱為「硬碟」。 在雲端運算環境中部署區塊儲存時,通常會部署一個或多個實體磁碟驅動器的邏輯 partition。 實作在產品供應專案與雲端廠商之間稍有不同,但通常可在實作中找到下列特性:

  • 所有虛擬機 (VM) 都需要連結的區塊記憶體磁碟區。
  • 只要區塊記憶體磁碟區持續存在,安裝到區塊記憶體磁碟區的檔案和程式會保存。
  • 區塊記憶體 volumes 通常用於暫存數據記憶體。
  • 連結至 VM 的區塊記憶體 volumes 通常會與 VM 一起刪除。

Azure Databricks 如何使用區塊記憶體?

當您開啟計算資源時,Azure Databricks 會設定及部署 VM,並連結區塊記憶體 volumes。 此區塊記憶體可用來儲存計算資源存留期的暫時數據檔。 這些檔案包括操作系統、已安裝的連結庫,以及磁碟快取所使用的數據。 雖然 Apache Spark 在背景中使用區塊記憶體來有效率地平行處理和數據載入,但大部分在 Azure Databricks 上執行的程式代碼不會直接儲存或載入數據以封鎖記憶體。

您可以執行任意程式代碼,例如使用連結至驅動程式節點的區塊記憶體的 Python 或 Bash 命令。 請參閱 在附加至驅動程序節點的暫時記憶體中使用檔案。

Unity WhereCatalog 儲存資料檔嗎?

Unity Catalog 依賴系統管理員來設定雲端記憶體與關係型對象之間的關聯性。 數據的確切位置 where 取決於系統管理員設定關聯的方式。

寫入或上傳至 Unity Catalog 所控管之對象的數據會儲存在下列其中一個位置:

  • 與中繼存放區、catalog或 schema相關聯的受控記憶體位置。 寫入或上傳至受控 tables 和受控 volumes 的資料使用受控記憶體。 請參閱 在 Unity Catalog中指定受控儲存位置。
  • 使用記憶體 credentials設定的外部位置。 寫入或上傳至外部 tables 和外部 volumes 的數據會使用外部記憶體。 請參閱 使用 Unity 連線到雲端物件儲存和服務 Catalog

Where Databricks SQL 是否會儲存備份 tables的數據?

當您以 Unity Catalog設定的 Databricks SQL 執行 CREATE TABLE 語句時,預設行為是將數據檔案儲存在以 Unity Catalog設定的受控儲存位置。 請參閱 Where,Unity Catalog 是否儲存資料檔案?

舊版 hive_metastorecatalog 遵循不同的規則。 請參閱 使用 Unity Catalog 和舊版 Hive 中繼存放區

Delta Live Tables 儲存資料文件 Where 嗎?

Databricks 建議在建立 DLT 管線時使用 Unity Catalog。 數據會儲存在與目標 schema相關聯的受控儲存位置目錄中。

您可以選擇性地使用Hive中繼存放區來設定 DLT 管線。 使用Hive中繼存放區設定時,您可以在 DBFS 或雲端物件記憶體上指定儲存位置。 如果您未指定位置,則會將 DBFS 根目錄上的位置指派給管線。

Apache Spark 是否 Where 寫入數據檔?

Databricks 建議搭配 Unity Catalog 使用物件名稱來讀取和寫入數據。 您也可以使用下列模式將檔案寫入 Unity Catalogvolumes:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>。 您必須具備足夠的權限,才能將數據上傳、創建、update或 insert 至 Unity Catalog管理的對象。

您可以選擇性地使用通用資源指標 (URI) 來指定資料檔案的路徑。 URI 會根據雲端提供者而有所不同。 您也必須針對目前的計算資源設定寫入許可權,才能寫入雲端物件記憶體。

Azure Databricks 會使用 Databricks 檔案系統,將 Apache Spark 讀取和寫入命令對應回雲端物件記憶體。 每個 Azure Databricks 工作區都有設定在為工作區配置的雲端帳戶中設定的 DBFS 根記憶體位置,所有使用者都可以存取該位置來讀取和寫入數據。 Databricks 不建議使用 DBFS 根目錄來儲存任何生產數據。 請參閱 什麼是 DBFS?使用 DBFS 根目錄的建議。

Where pandas 是否在 Azure Databricks 上寫入數據檔?

在 Databricks Runtime 14.0 和更新版本中,所有本機 Python 讀取和寫入作業的預設目前工作目錄 (CWD) 是包含筆記本的目錄。 如果您在儲存數據檔時只提供檔名,pandas 會將該數據檔儲存為與目前執行中筆記本平行的工作區檔案。

並非所有 Databricks 執行時間版本都支援工作區檔案,有些 Databricks 運行時間版本會根據您使用筆記本或 Git 資料夾而有不同的行為。 請參閱預設的目前工作目錄是什麼?

Where 我應該在 Azure Databricks 上寫入暫存盤嗎?

如果您必須寫入在叢集關閉之後不要保留的暫存盤,如果 CWD 位於工作區文件系統中,寫入暫存盤 $TEMPDIR 會產生比寫入目前工作目錄 (CWD) 更好的效能。 如果程式代碼在存放庫中執行,您也可以避免超過分支大小限制。 如需詳細資訊,請參閱 檔案和存放庫限制

如果要寫入的數據量很大,而且您想要讓記憶體自動調整,請寫入 。/local_disk0