同步

適用於:勾選“是”磚的SQL勾選“是”磚運行時

同步命令用於升級Hive Metastore中的外部表到Unity Catalog中的外部表。你可以使用它從現有的Hive Metastore表在Unity Catalog中創建新表,也可以在Hive Metastore中的源表發生變化時更新Unity Catalog表。

同步命令可以在模式級別上使用同步模式方法用於單個表同步表格語法。

預覽

此功能已在公共預覽

語法

同步模式target_schemasource_schema|表格target_tablesource_table老板主要運行

參數

  • 模式

    同步模式中的所有表。

    • target_schema

      Unity Catalog中已存在的模式,用戶被授權在其中創建表。

    • source_schema

      中的現有模式hive_metastore目錄,由用戶擁有。

  • 表格

    同步一個單獨的表。

    • target_table

      在Unity Catalog模式中的一個新表或現有表,用戶被授權在其中創建表。如果表已經存在,則替換它以匹配source_table,並且用戶還必須擁有該表。如果該表不存在,則將創建該表。

    • source_table

      中的現有表hive_metastore用戶擁有的。

  • 主要

    可選地將Unity Catalog中升級表的所有者設置為主要.默認所有者為當前用戶。

  • DRY_RUN

    指定時檢查是否source_table或者表source_schema無需實際創建或升級目標表即可進行升級。命令返回DRY_RUN_SUCCESS如果表可以升級。

返回

一份包含以下欄目的報告:

  • source_schema字符串

    源模式的名稱。模式是如果源是一個不受支持的臨時視圖。

  • source_name字符串

    源表的名稱。

  • source_type字符串

    表的類型:管理外部

  • target_catalog字符串

    在Unity catalog中同步表的目標目錄。

  • target_schema字符串

    在Unity Catalog中同步表的目標模式。

  • target_name字符串

    源表同步到的Unity Catalog中表的名稱。此名稱與源表名稱匹配。

  • status_code字符串

    方法的結果的狀態碼同步命令。

  • 描述字符串

    關於源表的sync命令狀態的描述性消息。

返回的通用狀態代碼同步

同步命令提供唯一的status_code字段表示升級到Unity Catalog的每個表的狀態。一些常見的狀態代碼以及解決它們的建議是:

  • DRY_RUN_SUCCESS:預演成功。

    表可以升級到Unity目錄使用同步命令。

  • DBFS_ROOT_LOCATION: Databricks文件係統根目錄下的表。

    該表位於Databricks Filesystem根位置。這在Unity Catalog中不支持。將表數據複製到Unity Catalog位置創建表命令使用克隆選擇。

  • EXTERNAL_TABLE_IN_MANAGED_LOCATION:外部表路徑不能在托管存儲下。

    給外部表的路徑是在Unity目錄管理存儲。如果表需要在托管存儲下,請使用命令將表升級為托管表創建表命令使用克隆選項或將表位置移出Unity Catalog托管存儲。

  • HIVE_SERDE:該表不符合從Hive Metastore升級到Unity Catalog的條件。原因:Hive SerDe Table。

    Unity Catalog不支持Hive SerDe表。將表更改為Delta格式並發出同步升級命令。

  • INVALID_DATASOURCE_FORMAT:數據源格式未指定或不支持。

    使用一種受支持的數據源格式:Delta、Parquet、CSV、JSON、ORC、TEXT

  • LOCATION_OVERLAP:輸入路徑與其他外部表重疊。

    表位置與其他外部表重疊。為表使用不同的位置或刪除重疊的外部表。

  • MULTIPLE_EXT_LOCATIONS:輸入路徑中包含其他外部位置。

    有多個外部位置,它們是所提供的表路徑的子目錄。檢查表位置中的外部位置是否必要。

  • MULTIPLE_TARGET_TABLE:已經存在不同的同步表。每個源表隻允許一個目標表。

    源表之前已經同步到不同的目標表,這是不允許的。強迫同步到另一個表,刪除table屬性upgraded_to從源表或刪除之前同步的表從Unity目錄,如果它不再需要。

  • NOT_EXTERNAL:表不符合從Hive Metastore升級到Unity Catalog的條件。原因:不是外部表。

    同步命令隻支持遷移外部表到Unity目錄。對於托管表,在Unity Catalog中使用控件創建一個托管表創建表命令使用克隆選擇。

  • READ_ONLY_CATALOG: Delta共享目錄內的數據是隻讀的,不能被修改和刪除。

    所選目錄是隻讀的增量共享目錄。屬性不能更新隻讀目錄中的表同步命令。

  • 成功: Table successfully synced.輸出說明

  • TABLE_ALREADY_EXISTS:目標表已經存在。

    與所選表同名的表已經存在於Unity Catalog中。重命名或刪除Unity Catalog中的現有表,並重新運行同步命令。

  • TEMP_TABLE_NOT_SUPPORTED:不支持臨時表和臨時視圖。

    臨時表或視圖不能升級到Unity Catalog。要使用臨時表或視圖,請在Unity Catalog中使用顯示創建表命令在統一目錄。

  • 超時:同步任務超時。

    日誌含義sync命令執行時間超過300秒。增加spark.databricks.sync.command.task.timeout到以秒為單位的更高值。缺省值為300。如果錯誤仍然存在,請聯係技術支持。

  • VIEWS_NOT_SUPPORTED:不支持視圖。

    使用。手動重新創建視圖顯示創建表命令在統一目錄。

例子

-同步一個現有的蜂巢metastore表格hive_metastore默認的my_tbl-一個團結目錄表格命名主要默認的my_tbl>同步表格主要默認的my_tblhive_metastore默認的my_tblsource_schemasource_namesource_typetarget_catalogtarget_schematarget_namestatus_code描述------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------默認的my_tbl外部主要默認的my_tbl成功表格主要默認的my_tbl同步-同步一個表格運行模式評估可升級性蜂巢metastore表格>同步表格主要默認的my_tblhive_metastore默認的my_tbl運行source_schemasource_namesource_typetarget_catalogtarget_schematarget_namestatus_code描述------------- ----------- ----------- -------------- ------------- ----------- --------------- ---------------------------------默認的my_tbl外部主要默認的my_tblDRY_RUN_SUCCESS-同步所有符合條件的模式hive_metastoremydb一個團結目錄模式主要my_db_uc-升級主要my_db_uc擁有通過阿爾夫@melmak>同步模式主要my_db_uchive_metastoremy_db老板阿爾夫@melmaksource_schemasource_namesource_typetarget_catalogtarget_schematarget_namestatus_code描述------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------...-運行模式同步模式評估所有一個模式-hive_metastoremydb升級團結目錄>同步模式主要my_db_uchive_metastoremy_db運行source_schemasource_namesource_typetarget_catalogtarget_schematarget_namestatus_code描述------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------...