Share via


將 Hive 資料表和檢視升級至 Unity 目錄

本文說明如何將現有工作區本機 Hive 中繼存放區中註冊的數據表和檢視升級至 Unity 目錄。 您可以將 Hive 資料表升級至 Unity 目錄中的受控數據表或外部資料表

  • Managed 數據表 是在 Unity 目錄中建立數據表的慣用方式。 Unity 目錄會完整管理其生命週期、檔案配置和記憶體。 Unity 目錄也會自動優化其效能。 受控數據表一律使用 Delta 數據表格式。

    受控數據表位於 您為 Unity 目錄保留的受控儲存位置 。 由於此記憶體需求,如果您想要將現有的Hive資料表複製到 Unity 目錄做為受控數據表,則必須使用 CLONECREATE TABLE AS SELECT (CTAS)。

  • 外部數據表 是數據表,其數據生命週期、檔案配置和儲存位置不受 Unity 目錄管理。 外部數據表支援多個數據格式。

    通常只有在您也需要使用非 Databricks 計算直接存取數據時,才會使用外部數據表(也就是不使用 Databricks 叢集或 Databricks SQL 倉儲)。 外部數據表在移轉案例中也很方便,因為您可以在 Unity 目錄中快速註冊現有的數據,而不需要複製數據。 這要歸功於外部數據表中的數據不需要位於保留的受控記憶體中。

如需 Unity 目錄中 Managed 和外部資料表的詳細資訊,請參閱 數據表

Hive 至 Unity 目錄移轉選項

當您準備好將Hive資料表移轉至Unity目錄時,有數個選項,視使用案例而定:

移轉工具 描述 Hive 數據表需求 已建立 Unity 目錄資料表 我為什麼要使用它?
UCX 一組完整的命令行公用程式和其他工具來評估工作區的 Unity 目錄移轉整備程度,並執行將身分識別、許可權、儲存位置和資料表移轉至 Unity 目錄的工作流程。 UCX 位於 GitHub 上的 databrickslabs/ucx Managed 或外部 Hive 數據表 受管理或外部 您想要將 Hive 資料表升級至 Unity 目錄以外的完整工作區升級規劃工具。 您想要升級Hive中繼存放區中具有大量數據的工作區。 您很熟悉執行腳本。 如果您想要將Hive資料表大量升級至Unity目錄受控數據表,這是您唯一的選項。 UCX 與所有 Databricks Labs 項目一樣,是公用 GitHub 存放庫,且 Databricks 不支援。
Unity 目錄升級精靈 目錄總管功能,可讓您將整個架構(資料庫)和多個 Managed 和外部數據表從 Hive 中繼存放區大量複製到 Unity 目錄中繼存放區做為外部數據表。 升級精靈會在 SYNC 您選取的數據表上執行 命令,讓原始Hive資料表保持不變。 您可以選擇排程定期升級,以便挑選來源 Hive 數據表的變更。 Managed 或外部 Hive 數據表 僅外部 您想要快速將Hive數據表升級至 Unity 目錄中的外部數據表,而且偏好可視化介面。 當來源 Hive 資料表變更時,排程定期同步處理的能力,使其成為在轉換至 Unity 目錄期間管理「混合式」Hive 和 Unity 目錄工作區的實用工具。
SYNC SQL 命令 SYNC 可讓您將外部數據表和受控數據表複製(如果 Managed 資料表儲存在 Databricks 工作區記憶體之外,有時稱為 DBFS 根目錄),並將其複製到 Unity 目錄中的外部數據表。 您可以同步個別資料表或整個架構。

SYNC 其設計目的是要依排程執行,以挑選Hive中繼存放區中的新變更,並將其同步至 Unity 目錄。
Managed 或外部 Hive 數據表 僅外部 您想要將 Hive 資料表快速升級至 Unity 目錄中的外部資料表,而且您想要使用 SQL 命令,而不是可視化介面。

當來源 Hive 資料表變更時,排程定期 SYNC 執行來更新現有的 Unity 目錄數據表,使其成為在轉換至 Unity 目錄期間管理「混合式」Hive 和 Unity 目錄工作區的實用工具。

因為您無法使用 SYNC 來升級 Databricks 工作區記憶體中的受控數據表,所以請針對這些數據表使用 CREATE TABLE CLONE
CREATE TABLE CLONE SQL 命令 CREATE TABLE CLONE 可讓您將Hive中繼存放區中的受控數據表升級為 Unity 目錄中的受控數據表。 您可以複製個別資料表。

深層複製是慣用的,因為它們除了現有的數據表元數據之外,也會將源數據表數據複製到複製目標。
Delta、Parquet 或 Iceberg 格式的 Managed Hive 數據表。 複製 Parquet 和 Iceberg 源數據表有一些特定需求和限制:請參閱 複製 Parquet 和 Iceberg 數據表的需求和限制。 僅限受控 您想要將 Hive 受控數據表移轉至 Unity 目錄受控數據表,以充分利用 Unity 目錄數據控管,而 Hive 數據表符合「Hive 數據表需求」數據格中列出的準則。

如果您的 Hive 資料表不符合「Hive 數據表需求」,您可以使用 CREATE TABLE AS SELECT SQL 命令 ,將 Hive 數據表升級至 Unity 目錄受控數據表。 不過 CLONE ,幾乎一律是慣用的。 複製的語法比 CREATE TABLE AS SELECT簡單:您不需要指定數據分割、格式、不因變數、Null 性、數據流、 COPY INTO和其他元數據,因為這些是從源數據表複製而來。

本文說明如何執行除了UCX驅動升級程式的所有程式。 Databricks 建議大多數工作區升級案例使用 UCX。 不過,針對更簡單的使用案例,您可能會偏好使用此處所述的一或多個工具。

開始之前

本節說明您應該準備移轉的一些影響,以及許可權和計算需求。

了解影響

您應該注意,當您修改工作負載以使用新的 Unity 目錄數據表時,您可能需要變更一些行為:

  • Unity 目錄會以不同於Hive的方式管理分割區。 Unity 目錄所管理的數據表不支援直接操作分割區的 Hive 命令。
  • 當您執行 CREATE TABLE CLONE時,不會移轉數據表歷程記錄。 您複製到 Unity 目錄的 Hive 中繼存放區中的任何資料表都會被視為新的資料表。 您無法執行 Delta Lake 時間移動或其他依賴移轉前歷程記錄的作業。

如需詳細資訊,請參閱 使用 Unity 目錄和舊版 Hive 中繼存放區

需求

若要執行移轉,您必須具備:

  • 具有 Unity 目錄中繼存放區和至少一個 Unity 目錄目錄的工作區。 請參閱 設定和管理 Unity 目錄

  • 您要移轉資料表的 Unity 目錄目錄權限。 本文涵蓋的每個程序開頭會列舉這些許可權需求。

  • 若要移轉至 Unity 目錄外部資料表:Unity 目錄中定義的記憶體認證和外部位置,以及 CREATE EXTERNAL TABLE 外部位置的許可權。

  • 存取符合下列兩個需求的 Azure Databricks 計算:

    • 支援 Unity 目錄(使用單一使用者或共用存取模式的 SQL 倉儲或計算資源)。
    • 允許存取Hive中繼存放區中的數據表。

    由於預設會針對 舊版數據表訪問控制 啟用使用共用存取模式的計算資源,這表示如果您使用該存取模式,則必須在您要移轉的Hive中繼存放區上擁有數據表訪問控制許可權。 您可以使用下列 SQL 命令來授與自己存取權:

    GRANT all_privileges ON catalog hive_metastore TO `<user>`
    

    或者,您可以在單一使用者存取模式中使用計算資源。

如需管理Hive中繼存放區中物件之許可權的詳細資訊,請參閱Hive中繼存放區許可權和安全性實體物件(舊版)。 如需在 Unity 目錄中繼存放區中管理物件許可權的詳細資訊,請參閱 在 Unity 目錄中管理許可權。

識別Hive中繼存放區所管理的數據表

若要判斷數據表目前是否已在 Unity 目錄中註冊,請檢查目錄名稱。 目錄中 hive_metastore 的數據表會在工作區本機 Hive 中繼存放區中註冊。 列出的任何其他目錄都受到 Unity 目錄的控管。

若要使用目錄總管檢視目錄中的 hive_metastore 資料表:

  1. 按兩下 目錄圖示提要欄位中的 [目錄 ]。
  2. 在目錄窗格中,流覽至 hive_metastore 目錄並展開架構節點。

您也可以使用 [目錄] 窗格中的篩選字段來搜尋特定數據表。

使用升級精靈,將架構或多個數據表從Hive中繼存放區升級至 Unity 目錄外部數據表

您可以使用目錄總管升級精靈,將完整的架構(資料庫)和多個外部或受控數據表從 Azure Databricks 預設 Hive 中繼存放區複製到 Unity 目錄中繼存放區。 升級的數據表將會是 Unity 目錄中的外部資料表。

如需決定何時使用升級精靈的說明,請參閱 Hive 至 Unity 目錄移轉選項

需求

資料格式需求

計算需求

  • 支援 Unity 目錄的計算資源。 請參閱 開始之前

Unity Catalog 對象和許可權需求

Hive 數據表存取需求

  • 如果您的計算使用共用存取模式,您需要存取 Hive 中繼存放區中的數據表,並使用舊版數據表訪問控制授與。 請參閱 開始之前

升級程序

  1. 按兩下目錄圖示提要欄位中的 [目錄] 以開啟目錄總管。

  2. 選取 hive_metastore 作為目錄,然後選取您要升級的架構(資料庫)。

    選取資料庫

  3. 按兩下 架構詳細資料檢視右上方的 [升級 ]。

  4. 選取您要升級的所有數據表,然後按 [下一步]。

    只有 Unity 目錄所支援格式的外部資料表可以使用升級精靈來升級。

  5. 設定每個數據表的目的地目錄、架構(資料庫)和擁有者。

    用戶將能夠在其目錄和架構許可權的內容中存取新建立的數據表。

    資料表擁有者在資料表上具有所有許可權,包括 SELECTMODIFY。 如果您未選取擁有者,則會以您身分建立受控數據表作為擁有者。 Databricks 通常建議您將數據表擁有權授與群組。 若要深入瞭解 Unity 目錄中的物件擁有權,請參閱 管理 Unity 目錄對象擁有權

    若要將相同的目錄和架構指派給多個數據表,請選取數據表,然後按兩下 [ 設定目的地 ] 按鈕。

    若要將相同的擁有者指派給多個數據表,請選取數據表,然後按兩下 [ 設定擁有者 ] 按鈕。

  6. 檢閱數據表組態。 若要修改它們,請按兩下 [ 上一步] 按鈕。

  7. 按兩下 [ 建立升級查詢]。

    查詢編輯器隨即出現,其中包含產生的 SQL 語句。

  8. 執行查詢。

    當查詢完成時,每個數據表的元數據已從Hive中繼存放區複製到 Unity 目錄。 這些數據表會在升級精靈中標示為升級。

  9. 使用每個新數據表的 [ 許可權] 索引標籤來定義更細緻的訪問控制。

  10. (選擇性)將批註新增至每個升級的Hive資料表,以將使用者指向新的 Unity 目錄數據表。

    返回目錄中的原始資料表 hive.metastore ,以新增數據表批註。

    如果您在數據表批註中使用下列語法,則參考已取代Hive數據表的筆記本和SQL查詢編輯器查詢將會使用刪除線文字來顯示已被取代的數據表名稱、將批註顯示為警告,並提供 Databricks Assistant 的快速修正 連結,以更新程式代碼以參考新的數據表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    請參閱 新增批註以指出Hive數據表已移轉

  11. 修改工作負載以使用新的數據表。

    如果您將批註新增至原始 Hive 數據表,就像上一個步驟所列的批注一樣,您可以使用 快速修正 連結和 Databricks Assistant 來協助您尋找和修改工作負載。

使用升級精靈將單一 Hive 數據表升級至 Unity 目錄外部數據表

您可以使用目錄總管中的 升級精靈,將單一數據表從預設Hive中繼存放區複製到 Unity 目錄中繼存放區

如需決定何時使用升級精靈的說明,請參閱 Hive 至 Unity 目錄移轉選項

需求

資料格式需求

計算需求

  • 支援 Unity 目錄的計算資源。 請參閱 開始之前

Unity Catalog 對象和許可權需求

升級程序

若要升級外部資料表:

  1. 按兩下目錄圖示提要欄位中的 [目錄] 以開啟 [目錄總管]。

  2. 選取您要升級的資料庫,然後選取數據表。

  3. 按兩下 資料表詳細數據檢視右上角的 [升級 ]。

  4. 選取要升級的數據表,然後按 [ 下一步]。

  5. 選取您的目的地目錄、架構(資料庫)和擁有者。

    用戶將能夠在其目錄和架構許可權的內容中存取新建立的數據表。

    資料表擁有者在資料表上具有所有許可權,包括 SELECTMODIFY。 如果您未選取擁有者,則會以擁有者身分建立受控數據表。 Databricks 通常建議您將數據表擁有權授與群組。 若要深入瞭解 Unity 目錄中的物件擁有權,請參閱 管理 Unity 目錄對象擁有權

  6. 按兩下 資料表詳細數據檢視右上角的 [升級 ]。

  7. 選取要升級的數據表,然後按 [ 下一步]。

    數據表元數據現在會複製到 Unity 目錄,並已建立新的資料表。 您現在可以使用 [ 許可權] 索引標籤來定義更細緻的訪問控制。

  8. 使用 [ 許可權] 索引標籤來定義更細緻的訪問控制。

  9. (選擇性)將批註新增至Hive數據表,以將使用者指向新的 Unity 目錄數據表。

    返回目錄中的原始資料表 hive.metastore ,以新增數據表批註。

    如果您在數據表批註中使用下列語法,則參考已取代Hive數據表的筆記本和SQL查詢編輯器查詢將會使用刪除線文字來顯示已被取代的數據表名稱、將批註顯示為警告,並提供 Databricks Assistant 的快速修正 連結,以更新程式代碼以參考新的數據表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    請參閱 新增批註以指出Hive數據表已移轉

  10. 修改現有的工作負載以使用新的數據表。

    如果您將批註新增至原始 Hive 數據表,就像上一個步驟所列的批注一樣,您可以使用 快速修正 連結和 Databricks Assistant 來協助您尋找和修改工作負載。

    注意

    如果您不再需要舊數據表,您可以從Hive中繼存放區卸除它。 卸除外部數據表並不會修改雲端租用戶上的數據檔。

使用SYNC將Hive資料表升級至 Unity 目錄外部資料表

您可以使用 SYNC SQL 命令,將 Hive 中繼存放區中的外部資料表複製到 Unity 目錄中的外部資料表。 您可以同步個別資料表或整個架構。

您也可以使用 SYNC 將儲存在 Databricks 工作區記憶體外部的 Hive 受控數據表(有時稱為 DBFS 根目錄)複製到 Unity 目錄中的外部數據表。 您無法使用它來複製儲存在工作區記憶體中的 Hive 受控數據表。 若要複製這些數據表,請改用 CREATE TABLE CLONE

命令 SYNC 會對它升級的每個源數據表執行寫入作業,以新增其他數據表屬性以進行記帳,包括目標 Unity 目錄外部資料表的記錄。

SYNC 當 Hive 中繼存放區中的源數據表變更時,也可以用來更新現有的 Unity 目錄數據表。 這可讓您逐步轉換至 Unity 目錄是很好的工具。

如需詳細資訊,請參閱 SYNC。 如需決定何時使用升級精靈的說明,請參閱 Hive 至 Unity 目錄移轉選項

需求

資料格式需求

計算需求

  • 支援 Unity 目錄的計算資源。 請參閱 開始之前

Unity Catalog 對象和許可權需求

Hive 數據表存取需求

  • 如果您的計算使用共用存取模式,您需要存取 Hive 中繼存放區中的數據表,並使用舊版數據表訪問控制授與。 請參閱 開始之前

升級程序

若要使用 SYNC將 Hive 中繼存放區中的數據表升級至 Unity 目錄外部資料表:

  1. 在筆記本或 SQL 查詢編輯器中,執行下列其中一項:

    同步外部 Hive 資料表:

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    同步外部 Hive 架構及其所有資料表:

    SYNC SCHEMA <uc-catalog>.<new-schema> FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    

    同步處理儲存在 Databricks 工作區記憶體外部的受控 Hive 資料表:

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> AS EXTERNAL FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    同步架構,其中包含儲存在 Databricks 工作區記憶體外部的受控 Hive 資料表:

    SYNC SCHEMA <uc-catalog>.<new-schema> AS EXTERNAL FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    
  2. 授與帳戶層級使用者或群組對新數據表的存取權。 請參閱 在 Unity 目錄中管理許可權。

  3. (選擇性)將批註新增至原始 Hive 數據表,以將使用者指向新的 Unity 目錄數據表。

    返回目錄中的原始資料表 hive.metastore ,以新增數據表批註。 若要瞭解如何使用目錄總管新增數據表批注,請參閱 使用目錄總管將 Markdown 批註新增至數據物件。 若要瞭解如何在筆記本或 SQL 查詢編輯器中使用 SQL 語句新增數據表批注,請參閱 COMMENT ON

    如果您在數據表批註中使用下列語法,則參考已取代Hive數據表的筆記本和SQL查詢編輯器查詢將會使用刪除線文字來顯示已被取代的數據表名稱、將批註顯示為警告,並提供 Databricks Assistant 的快速修正 連結,以更新程式代碼以參考新的數據表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    請參閱 新增批註以指出Hive數據表已移轉

  4. 移轉數據表之後,用戶應該更新其現有的查詢和工作負載,以使用新的數據表。

    如果您將批註新增至原始 Hive 數據表,就像上一個步驟所列的批注一樣,您可以使用 快速修正 連結和 Databricks Assistant 來協助您尋找和修改工作負載。

  5. 在您卸除舊數據表之前,請撤銷其存取權並重新執行相關的查詢和工作負載,以測試相依性。

    如果您仍然依賴取代批注來協助您尋找並更新參考舊數據表的現有程序代碼,請勿卸除舊數據表。 同樣地,如果該數據表自原始同步處理后已變更,請勿卸除舊數據表: SYNC 可用來使用來源 Hive 數據表的變更來更新現有的 Unity 目錄數據表。

使用 CLONE 將 Hive 受控數據表升級至 Unity 目錄受控數據表

使用 CREATE TABLE CLONE 將Hive中繼存放區中的受控數據表升級為 Unity 目錄中的受控數據表。 您可以複製個別資料表。 除了現有的數據表元數據之外,深層複製 源數據表數據到複製目標。 如果您想要卸除Hive源數據表,請使用深層複製。 淺層複製 不會將數據檔複製到複製目標,而是藉由參考源數據來存取它們:數據表元數據相當於來源。 淺層複製比較便宜,但要求查詢複製目標中的數據的使用者也可以存取源數據。

如需決定使用 CLONE時機的說明,請參閱 Hive 至 Unity 目錄移轉選項。 如需決定要使用的複製類型的說明,請參閱 在 Azure Databricks 上複製數據表。

需求

資料格式需求

  • Delta、Parquet 或 Iceberg 格式的 Managed Hive 數據表。 複製 Parquet 和 Iceberg 源數據表有一些特定需求和限制。 請參閱 複製 Parquet 和 Iceberg 資料表的需求和限制。

計算需求

  • 支援 Unity 目錄的計算資源。 請參閱 開始之前

權限需求

  • USE CATALOG 加入資料表之目錄和架構的 和 USE SCHEMA 許可權,以及 CREATE TABLE 架構上的 和許可權,或者您必須是目錄或架構的擁有者。 請參閱 Unity 目錄許可權和安全性實體物件
  • 如果您的計算使用共用存取模式,您需要存取 Hive 中繼存放區中的數據表,並使用舊版數據表訪問控制授與。 請參閱 開始之前

升級程序

若要將 Hive 中繼存放區中的受控數據表升級至 Unity 目錄中的受控數據表:

  1. 在筆記本或 SQL 查詢編輯器中,執行下列其中一項:

    深層複製 Hive 中繼存放區中的受控數據表:

    CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
    DEEP CLONE hive_metastore.<source-schema>.<source-table>;
    

    淺層複製 Hive 中繼存放區中的受控數據表:

    CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
    SHALLOW CLONE hive_metastore.<source-schema>.<source-table>;
    

    如需其他參數的詳細資訊,包括數據表屬性,請參閱 CREATE TABLE CLONE

  2. 授與帳戶層級使用者或群組對新數據表的存取權。 請參閱 在 Unity 目錄中管理許可權。

  3. (選擇性)將批註新增至原始 Hive 數據表,以將使用者指向新的 Unity 目錄數據表。

    返回目錄中的原始資料表 hive.metastore ,以新增數據表批註。 若要瞭解如何使用目錄總管新增數據表批注,請參閱 使用目錄總管將 Markdown 批註新增至數據物件。 若要瞭解如何在筆記本或 SQL 查詢編輯器中使用 SQL 語句新增數據表批注,請參閱 COMMENT ON

    如果您在數據表批註中使用下列語法,則參考已取代Hive數據表的筆記本和SQL查詢編輯器查詢將會使用刪除線文字來顯示已被取代的數據表名稱、將批註顯示為警告,並提供 Databricks Assistant 的快速修正 連結,以更新程式代碼以參考新的數據表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    請參閱 新增批註以指出Hive數據表已移轉

  4. 移轉數據表之後,用戶應該更新其現有的查詢和工作負載,以使用新的數據表。

    如果您將批註新增至原始 Hive 數據表,就像上一個步驟所列的批注一樣,您可以使用 快速修正 連結和 Databricks Assistant 來協助您尋找和修改工作負載。

  5. 在您卸除舊數據表之前,請撤銷其存取權並重新執行相關的查詢和工作負載,以測試相依性。

    如果您仍然依賴取代批注來協助您尋找並更新參考舊數據表的現有程序代碼,請勿卸除舊數據表。 同樣地,如果您執行淺層複製,請勿卸除舊數據表。 淺層複製來自來源Hive數據表的參考數據。

使用 CREATE TABLE AS SELECT 將 Hive 數據表升級至 Unity 目錄受控數據表

如果您無法使用 或不想使用 CREATE TABLE CLONE 將 Hive 中繼存放區中的數據表移轉至 Unity 目錄中的受控數據表,您可以使用 查詢 Hive 數據表,在 Unity 目錄中建立新的受控數據表 CREATE TABLE AS SELECT。 如需 和 CREATE TABLE AS SELECT之間CREATE TABLE CLONE差異的相關信息,請參閱 Hive 至 Unity 目錄移轉選項

需求

計算需求

  • 支援 Unity 目錄的計算資源。 請參閱 開始之前

權限需求

  • USE CATALOG 加入資料表之目錄和架構的 和 USE SCHEMA 許可權,以及 CREATE TABLE 架構上的 和許可權,或者您必須是目錄或架構的擁有者。 請參閱 Unity 目錄許可權和安全性實體物件
  • 如果您的計算使用共用存取模式,您需要存取 Hive 中繼存放區中的數據表,並使用舊版數據表訪問控制授與。 請參閱 開始之前

升級程序

若要使用 CREATE TABLE AS SELECT將 Hive 中繼存放區中的數據表升級至 Unity 目錄中的受控數據表:

  1. 藉由查詢現有的數據表,建立新的 Unity 目錄數據表。 取代佔位元值:

    • <uc-catalog>:新數據表的 Unity 目錄。
    • <uc-schema>:新數據表的 Unity 目錄架構。
    • <new-table>:Unity 目錄數據表的名稱。
    • <source-schema>:Hive 資料表的架構,例如 default
    • <source-table>:Hive 資料表的名稱。

    SQL

    CREATE TABLE <uc-catalog>.<new-schema>.<new-table>
    AS SELECT * FROM hive_metastore.<source-schema>.<source-table>;
    

    Python

    df = spark.table("hive_metastore.<source-schema>.<source-table>")
    
    df.write.saveAsTable(
      name = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    R

    %r
    library(SparkR)
    
    df = tableToDF("hive_metastore.<source-schema>.<source-table>")
    
    saveAsTable(
      df = df,
      tableName = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    Scala

    val df = spark.table("hive_metastore.<source-schema>.<source-table>")
    
    df.write.saveAsTable(
      tableName = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    如果您想要只移轉某些數據行或數據列,請修改 SELECT 語句。

    注意

    此處顯示的命令會 建立受控數據表 ,其中數據會複製到專用 的受控儲存位置。 如果您想要建立 外部數據表,其中數據表是在 Unity 目錄中註冊,而不移動雲端記憶體中的數據,請參閱 使用升級精靈將單一 Hive 數據表升級至 Unity 目錄外部數據表。 另 請參閱在 Unity 目錄中指定受控儲存位置。

  2. 授與帳戶層級使用者或群組對新數據表的存取權。 請參閱 在 Unity 目錄中管理許可權。

  3. (選擇性)將批註新增至原始 Hive 數據表,以將使用者指向新的 Unity 目錄數據表。

    返回目錄中的原始資料表 hive.metastore ,以新增數據表批註。 若要瞭解如何使用目錄總管新增數據表批注,請參閱 使用目錄總管將 Markdown 批註新增至數據物件。 若要瞭解如何在筆記本或 SQL 查詢編輯器中使用 SQL 語句新增數據表批注,請參閱 COMMENT ON

    如果您在數據表批註中使用下列語法,則參考已取代Hive數據表的筆記本和SQL查詢編輯器查詢將會使用刪除線文字來顯示已被取代的數據表名稱、將批註顯示為警告,並提供 Databricks Assistant 的快速修正 連結,以更新程式代碼以參考新的數據表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    請參閱 新增批註以指出Hive數據表已移轉

  4. 移轉數據表之後,用戶應該更新其現有的查詢和工作負載,以使用新的數據表。

    如果您將批註新增至原始 Hive 數據表,就像上一個步驟所列的批注一樣,您可以使用 快速修正 連結和 Databricks Assistant 來協助您尋找和修改工作負載。

  5. 在您卸除舊數據表之前,請撤銷其存取權並重新執行相關的查詢和工作負載,以測試相依性。

    如果您仍然依賴取代批注來協助您尋找並更新參考舊數據表的現有程序代碼,請勿卸除舊數據表。

將檢視升級至 Unity 目錄

將檢視的所有參考數據表升級至相同的 Unity 目錄中繼存放區之後,您可以 建立參考新數據表的新檢視

新增批註以指出Hive數據表已移轉

當您將批註新增至已取代的 Hive 資料表時,會將使用者指向新的 Unity 目錄數據表、筆記本和 SQL 查詢編輯器查詢,以參考已取代的 Hive 數據表,將會使用刪除線文字顯示已取代的數據表名稱、將批註顯示為警告,並提供 Databricks Assistant 的快速修正 連結,以更新程式代碼以參考新數據表。

Hive 數據表取代警告

您的註記必須使用下列格式:

This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.

若要瞭解如何使用目錄總管新增數據表批注,請參閱 使用目錄總管將 Markdown 批註新增至數據物件。 若要瞭解如何在筆記本或 SQL 查詢編輯器中使用 SQL 語句新增數據表批注,請參閱 COMMENT ON

使用 Databricks Assistant 來更新已被取代的數據表參考

如果您在 SQL 查詢編輯器的筆記本資料格或語句的數據表名稱上看到刪除線文字,請將滑鼠停留在資料表名稱上方以顯示警告通知。 如果該警告通知將數據表描述為已被取代,並顯示新的數據表名稱,請按兩下 [快速修正],後面接著 [修正淘汰]。 Databricks Assistant 隨即開啟,供應專案,以新的 Unity 目錄數據表名稱取代已被取代的數據表名稱。 請遵循提示來完成工作。

顯示使用 Databricks Assistant 更新 Hive 數據表的影片

請參閱使用 Databricks Assistant