Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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ında depolanan Hive yönetilen tablolarını yükseltmek için kullanamazsınız. Bu tabloları yükseltmek için CREATE TABLE CLONEkullanı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 üzerindeki bu davranış, spark.databricks.sync.command.disableSourceTableWrites
'yi true
olarak ayarlayarak, SYNC
komutu çalıştırılmadan önce 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, yapılandırma SYNC, kullanıcının true
komutunu yeniden çalıştırmadan önce hedef tabloyu el ile yeniden adlandırması gerekir.
Önemli
Bir SYNC
komutu yürütüldüğünde, SET TBLPROPERTIES
işlemi 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,
source_table
ile eşleşmesi için 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
içindedir.
-
-
İsteğe bağlı olarak Unity Kataloğu'nda yükseltilen tabloların sahibini olarak
principal
ayarlayın. Varsayılan sahip mevcut 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ı. Hive tarafından yönetilen ve çalışma alanı depolama biriminde saklanan tabloları yükseltmek içinAS EXTERNAL
kullanamazsınız.DRY RUN
Belirtildiğinde, hedef tabloları oluşturmadan veya yükseltmeden,
source_table
içindeki veyasource_schema
içindeki tabloların yükseltilip 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.
İadeler
Aşağıdaki sütunları içeren bir rapor:
source_schema STRING
Kaynak şemanın adı. Şema, kaynak desteklenmeyen geçici bir görünüm olduğunda
NULL
olur.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.
SYNC
tarafından döndürülen yaygın durum kodları
SYNC
komutu, yükseltmenin durumunu temsil eden Unity Kataloğu'na yükseltilecek her bir tablo için çıktıda benzersiz bir status_code
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. Tablo verilerini bir CREATE TABLE komutu ve
DEEP CLONE
seçeneği kullanarak Unity Catalog konumuna kopyalayın.EXTERNAL_TABLE_IN_MANAGED_LOCATION
: Dış tablo yolu yönetilen depolama altında olamaz.Dış tablo için verilen yol, Unity Catalog'un yönetilen depolaması içindedir. Tablonun yönetilen depolama alanı altında olması gerekiyorsa, CREATE TABLE seçeneğiyle bir
DEEP CLONE
komutu 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, METİN, AVRO
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 harici konum bulunmaktadı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 zaten başka bir hedef tabloya eşitlenmişti ve bu durum izin verilmez. Ögesi
SYNC
farklı bir tabloya zorlamak için, kaynak tablodan tablo özelliğiniupgraded_to
kaldırın veya artık gerekli değilse daha önce eşitlenmiş olan tabloyu 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: Bir dış tablo değil.SYNC
komutu yalnızca dış tabloları Unity Kataloğu'na geçirmeyi destekler. Yönetilen tablolar için, CREATE TABLE seçeneğiyle birDEEP CLONE
komutu kullanarak Unity Kataloğu'nda bir yönetilen tablo oluşturun. Alternatif olarak, Unity Kataloğu'nda bir dış tablo oluşturmak içinAS EXTERNAL
komutunuSYNC
yan tümcesiyle kullanın.READ_ONLY_CATALOG
: Delta paylaşım kataloğu içindeki veriler salt okunurdur ve değiştirilemez veya silinemez.Seçilen katalog, delta paylaşım kataloğu olup salt okunurdur. 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 tablonun adıyla 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 tablosu komut görevinin tamamlanması 600 saniyeden fazla sürdü. Saniyeler içinde daha yüksek bir değere yükseltin
spark.databricks.sync.command.task.timeout
.Alternatif olarak, bir eşitleme şeması görevi zaman aşımına uğrayabilir ve bu durumda bir
TimeoutException
görürsünüz. Saniyeler içinde daha yüksek bir değere yükseltinspark.databricks.sync.command.task.create.timeout
.Her iki bayrak için de varsayılan değer 600'dür. Sorun devam ederse desteğe başvurun.
VIEWS_NOT_SUPPORTED
: Görünümler desteklenmez.Unity Kataloğu'ndaki 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
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...