SYNC
Şunlar için geçerlidir: Yalnızca Databricks SQL Databricks Runtime Unity Kataloğu
SYNC
Hive Meta Veri Deposu'ndaki dış tabloları Unity Kataloğu'ndaki dış tablolara yükseltmek için komutunu kullanın. Databricks çalışma alanı depolama alanı dışında depolanan Hive yönetilen tablolarını (bazen DBFS kökü olarak da adlandırılır) Unity Kataloğu'ndaki dış tablolara yükseltmek için de kullanabilirsiniz SYNC
. Çalışma alanı depolama alanında depolanan Hive yönetilen tablolarını yükseltmek için kullanamazsınız. Bu tabloları yükseltmek için CREATE TABLE CLONE kullanın.
Mevcut Hive Meta Veri Deposu tablolarından Unity Kataloğu'nda yeni tablolar oluşturmak ve Hive Meta Veri Deposu'ndaki kaynak tablolar değiştirildiğinde Unity Kataloğu tablolarını güncelleştirmek için kullanabilirsiniz SYNC
.
Komut, SYNC
söz dizimi kullanılarak şema düzeyinde veya söz dizimi kullanılarak SYNC SCHEMA
SYNC TABLE
tek bir tablo için çalıştırılabilir.
komutu, kendi muhasebesi için bazı ek tablo özellikleri eklemek üzere yükseltmiş olduğu her kaynak tabloya bir yazma işlemi (ALTER TABLE
) gerçekleştirir.
Delta tabloları söz konusu olduğunda, yazma işlemini gerçekleştirmek için komutu çalıştıran kümenin veya SQL Ambarı'nın tablo konumuna yazma erişimi olmalıdır.
Databricks Runtime 12.2 LTS veya üzerinde bu davranış, spark yapılandırması spark.databricks.sync.command.disableSourceTableWrites
true
komutu çalıştırılmadan SYNC
önce olarak ayarlanarak kapatılabilir. olarak true
SYNC
ayarlandığında yeni tablo özellikleri eklemez ve bu nedenle tablonun daha önce Unity Kataloğu'na yükseltilip yükseltilmediğini algılamayabilir.
Bu durumda, tablonun daha önce Unity Kataloğu'na yükseltilip yükseltilmemiş olduğunu belirlemek için yalnızca tablo adına dayanır.
Kaynak tablo son SYNC komutundan sonra yeniden adlandırıldıysa, kullanıcı, config olduğunda true
SYNC komutunu yeniden çalıştırmadan önce hedef tabloyu el ile yeniden adlandırması gerekir.
Önemli
Bir SYNC
komut yürütürken, SET TBLPROPERTIES
işlem hedef Unity Kataloğu dış tablo başvurusunu gösteren bir tablo özelliği ekler. Bu işlem yeni bir Delta anlık görüntüsünü hesaplar ve tablo Delta günlüğüne yeni bir giriş ekler ve bulut depolamadaki hedef tablo yoluna yazar.
Sözdizimi
SYNC { SCHEMA target_schema [AS EXTERNAL] FROM source_schema |
TABLE target_table [AS EXTERNAL] FROM source_table }
[SET OWNER principal]
[DRY RUN]
Parametreler
SCHEMA
SYNC
bir şema içindeki tüm tablolar.-
Unity Kataloğu'nda kullanıcının tablo oluşturma yetkisine sahip olduğu mevcut bir şema.
-
Katalogda
hive_metastore
var olan ve kullanıcıya ait olan şema.
-
TABLE
SYNC
tek bir tablo.-
Kullanıcının tablo oluşturma yetkisine sahip olduğu bir şemadaki Unity Kataloğu'ndaki yeni veya var olan tablo. Tablo zaten varsa, ile eşleşecek
source_table
şekilde değiştirilir ve kullanıcının da tabloya sahip olması gerekir. Tablo yoksa oluşturulur. -
Kullanıcının sahip olduğu mevcut bir tablo
hive_metastore
.
-
-
İsteğe bağlı olarak Unity Kataloğu'nda yükseltilen tabloların sahibini olarak
principal
ayarlayın. Varsayılan sahip geçerli kullanıcıdır. AS EXTERNAL
SYNC
Unity Kataloğu'ndaki dış tablolara Databricks çalışma alanı depolama alanı dışında (bazen DBFS kökü olarak da adlandırılır) depolanan bir Hive yönetilen tablosu veya şeması. Çalışma alanı depolama alanında depolanan Hive yönetilen tablolarını yükseltmek için kullanamazsınızAS EXTERNAL
.DRY RUN
Belirtildiğinde, hedef tabloları oluşturmadan veya yükseltmeden içindeki
source_schema
veya tablolarının yükseltilipsource_table
yükseltilemeyeceğini denetler. Bir tablo yükseltilebiliyorsa komut döndürürDRY_RUN_SUCCESS
.AS EXTERNAL
Databricks Runtime 13.2 ve üzerini başlatan bu isteğe bağlı yan tümce, hive meta veri deposundaki yönetilen tabloların Unity Kataloğu'nda dış tablolar olarak yükseltileceğini belirtmek için eklenebilir. ileSYNC SCHEMA
kullanıldığında, içindeki yönetilen tablolar da dahil olmak üzere tüm tablolara uygulanırsource_schema.
Döndürülenler
Aşağıdaki sütunları içeren bir rapor:
source_schema STRING
Kaynak şemanın adı. Şema,
NULL
kaynağın desteklenmeyen geçici bir görünüm olmasıdır.source_name STRING NOT NULL
Kaynak tablonun adı.
source_type STRING NOT NULL
Tablonun türü:
MANAGED
veyaEXTERNAL
target_catalog STRING NOT NULL
Unity Kataloğu'nda tablonun eşitlendiği hedef katalog.
target_schema STRING NOT NULL
Unity Kataloğu'nda tablonun eşitlendiği hedef şema.
target_name STRING NOT NULL
Kaynak tablonun eşitlendiği Unity Kataloğu'ndaki tablonun adı. Bu ad, kaynak tablo adıyla eşleşir.
status_code STRING NOT NULL
Kaynak tablo için komutun
SYNC
sonucu için bir durum kodu.description STRING
Kaynak tablo için eşitleme komutunun durumu hakkında açıklayıcı bir ileti.
Tarafından döndürülen ortak durum kodları SYNC
komutu, SYNC
yükseltmenin durumunu temsil eden Unity Kataloğu'na yükseltilecek her tablonun çıktısında benzersiz status_code
bir alan sağlar.
Bazı yaygın durum kodları ve bunları ele almaya yönelik öneriler şunlardır:
DRY_RUN_SUCCESS
: Kuru çalıştırma başarılı.Tablo, komutu kullanılarak Unity Kataloğu'na
SYNC
yükseltilebilir.DBFS_ROOT_LOCATION
: Databricks Dosya Sistemi kökünde bulunan tablo.Tablo Databricks Dosya Sistemi kök konumunda bulunur. Bu, Unity Kataloğu'nda desteklenmez. seçeneğiyle create table komutunu kullanarak tablo verilerini Unity Kataloğu konumuna
DEEP CLONE
kopyalayın.EXTERNAL_TABLE_IN_MANAGED_LOCATION
: Dış tablo yolu yönetilen depolama altında olamaz.Dış tablo için verilen yol Unity Kataloğu depolamayı yönetme içindedir. Tablonun yönetilen depolama alanı altında olması gerekiyorsa, seçeneğiyle
DEEP CLONE
CREATE TABLE komutunu kullanarak tabloyu yönetilen tablo olarak yükseltin veya tablo konumunu Unity Kataloğu yönetilen depolama alanının dışına taşıyın.HIVE_SERDE
: Tablo Hive Meta Veri Deposu'ndan Unity Kataloğu'na yükseltme için uygun değil. Neden: Hive SerDe Tablosu.Hive SerDe tabloları Unity Kataloğu tarafından desteklenmez. Tabloları Delta biçiminde değiştirin ve yükseltme komutunu çalıştırın
SYNC
.INVALID_DATASOURCE_FORMAT
: Veri kaynağı biçimi belirtilmedi veya desteklenmiyor.Desteklenen veri kaynağı biçimlerinden birini kullanın: Delta, Parquet, CSV, JSON, ORC, METNEÇEVİr
LOCATION_OVERLAP
: Giriş yolu diğer dış tablolarla çakışıyor.Tablo konumu diğer dış tablolarla çakışıyor. Tablo için farklı bir konum kullanın veya çakışan dış tabloları kaldırın.
MULTIPLE_EXT_LOCATIONS
: Giriş yolu diğer dış konumları içerir.Sağlanan tablo yolunun alt dizinleri olan birden fazla dış konum vardır. Tablo konumu içindeki dış konumların gerekli olup olmadığını denetleyin.
MULTIPLE_TARGET_TABLE
: Farklı bir eşitlenmiş tablo zaten var. Kaynak tablo başına yalnızca bir hedef tabloya izin verilir.Kaynak tablo daha önce izin verilmeyen farklı bir hedef tabloyla eşitlenmişti. öğesini
SYNC
farklı bir tabloya zorlamak için, kaynak tablodan table özelliğiniupgraded_to
kaldırın veya daha önce eşitlenmiş olan tabloyu artık gerekli değilse Unity Kataloğu'ndan kaldırın.NOT_EXTERNAL
: Tablo Hive Meta Veri Deposu'ndan Unity Kataloğu'na yükseltilmeye uygun değil. Neden: Dış tablo değil.SYNC
komutu yalnızca dış tabloları Unity Kataloğu'na geçirmeyi destekler. Yönetilen tablolar için Unity Kataloğu'nda create TABLE komutunu kullanarak seçeneğiyleDEEP CLONE
bir yönetilen tablo oluşturun. Alternatif olarak, Unity Kataloğu'ndaAS EXTERNAL
bir dış tablo oluşturmak için komutuylaSYNC
yan tümcesini kullanın.READ_ONLY_CATALOG
: Delta paylaşım kataloğu içindeki veriler salt okunurdur ve değiştirilemez veya silinemez.Seçilen katalog salt okunur bir delta paylaşım kataloğudur. Salt okunur katalog içindeki tablolar komutu kullanılarak
SYNC
güncelleştirilemez.SUCCESS
: Tablo başarıyla eşitlendi.TABLE_ALREADY_EXISTS
: Hedef tablo zaten var.Seçilen tabloyla aynı ada sahip bir tablo Unity Kataloğu'nda zaten var. Unity Kataloğu'nda varolan tabloyu yeniden adlandırın veya kaldırın ve komutu yeniden çalıştırın
SYNC
.TEMP_TABLE_NOT_SUPPORTED
: Geçici tablolar veya görünümler desteklenmez.Geçici tablolar veya görünümler Unity Kataloğu'na yükseltilemez. Geçici tabloları veya görünümleri kullanmak için, Unity Kataloğu'ndaki SHOW CREATE TABLE komutunu kullanarak bunları Unity Kataloğu'nda yeniden oluşturun.
TIMEOUT
: Eşitleme görevi zaman aşımına uğradı.Eşitleme komutu görevinin tamamlanması 300 saniyeden fazla sürdü. Saniyeler içinde daha yüksek bir değere yükseltin
spark.databricks.sync.command.task.timeout
. Varsayılan değer 300'dür. Hata devam ederse desteğe başvurun.VIEWS_NOT_SUPPORTED
: Görünümler desteklenmez.Unity Kataloğu'nda SHOW CREATE TABLE komutunu kullanarak görünümleri el ile yeniden oluşturun.
Örnekler
-- Sync an existing hive metastore table hive_metastore.default.my_tbl to a Unity Catalog
-- table named main.default.my_tbl.
> SYNC TABLE main.default.my_tbl FROM hive_metastore.default.my_tbl;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
default my_tbl external main default my_tbl SUCCESS Table main.default.my_tbl synced.
-- Sync an existing managed hive metastore table hive_metastore.default.my_tbl to an external table named main.default.my_tbl in Unity Catalog.
> SYNC TABLE main.default.my_tbl AS EXTERNAL FROM hive_metastore.default.my_tbl;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
default my_tbl managed main default my_tbl SUCCESS Table main.default.my_tbl synced.
-- SYNC a table in DRY RUN mode to evaluate the upgradability of the hive metastore table.
> SYNC TABLE main.default.my_tbl FROM hive_metastore.default.my_tbl DRY RUN;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- --------------- ---------------------------------
default my_tbl external main default my_tbl DRY_RUN_SUCCESS
-- SYNC all the eligible tables in schema hive_metastore.mydb to a Unity Catalog schema main.my_db_uc.
-- The upgraded tables in main.my_db_uc will be owned by alf@melmak.et
> SYNC SCHEMA main.my_db_uc FROM hive_metastore.my_db SET OWNER `alf@melmak.et`;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...
-- DRY RUN mode of SYNC SCHEMA to evaluate all the tables in a schema
-- hive_metastore.mydb for upgrading to Unity Catalog.
> SYNC SCHEMA main.my_db_uc FROM hive_metastore.my_db DRY RUN;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...
-- Sync all tables including managed tables in a schema hive_metastore.mydb
-- as external tables in Unity Catalog.
> SYNC SCHEMA main.my_db_uc AS EXTERNAL FROM hive_metastore.my_db;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...