同步
適用於:磚的SQL磚運行時
的同步
命令用於升級Hive Metastore中的外部表到Unity Catalog中的外部表。你可以使用它從現有的Hive Metastore表在Unity Catalog中創建新表,也可以在Hive Metastore中的源表發生變化時更新Unity Catalog表。
的同步
命令可以在模式級別上使用同步模式
方法用於單個表同步表格
語法。
預覽
此功能已在公共預覽.
參數
模式
同步
模式中的所有表。Unity Catalog中已存在的模式,用戶被授權在其中創建表。
中的現有模式
hive_metastore
目錄,由用戶擁有。
表格
同步
一個單獨的表。在Unity Catalog模式中的一個新表或現有表,用戶被授權在其中創建表。如果表已經存在,則替換它以匹配
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_tbl從hive_metastore.默認的.my_tbl;source_schemasource_namesource_typetarget_catalogtarget_schematarget_namestatus_code描述------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------默認的my_tbl外部主要默認的my_tbl成功表格主要.默認的.my_tbl同步.-同步一個表格在幹運行模式來評估的可升級性的的蜂巢metastore表格.>同步表格主要.默認的.my_tbl從hive_metastore.默認的.my_tbl幹運行;source_schemasource_namesource_typetarget_catalogtarget_schematarget_namestatus_code描述------------- ----------- ----------- -------------- ------------- ----------- --------------- ---------------------------------默認的my_tbl外部主要默認的my_tblDRY_RUN_SUCCESS-同步所有的符合條件的表在模式hive_metastore.mydb來一個團結目錄模式主要.my_db_uc.-的升級表在主要.my_db_uc將是擁有通過阿爾夫@melmak.等>同步模式主要.my_db_uc從hive_metastore.my_db集老板`阿爾夫@melmak.等`;source_schemasource_namesource_typetarget_catalogtarget_schematarget_namestatus_code描述------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------...-幹運行模式的同步模式來評估所有的表在一個模式-hive_metastore.mydb為升級來團結目錄.>同步模式主要.my_db_uc從hive_metastore.my_db幹運行;source_schemasource_namesource_typetarget_catalogtarget_schematarget_namestatus_code描述------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------...