Aracılığıyla paylaş


SYNC

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmişYalnızca Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime onay işareti evet olarak işaretlenmiş 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 SCHEMASYNC 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 trueSYNC 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.

    • hedef_şeması

      Unity Kataloğu'nda kullanıcının tablo oluşturma yetkisine sahip olduğu mevcut bir şema.

    • source_schema

      Katalogda hive_metastore var olan ve kullanıcıya ait olan şema.

  • TABLE

    SYNC tek bir tablo.

    • target_table

      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.

    • kaynak_tablosu

      Kullanıcının sahip olduğu mevcut bir tablo hive_metastore içindedir.

  • müdür

    İsteğe bağlı olarak Unity Kataloğu'nda yükseltilen tabloların sahibini olarak principalayarlayı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çin AS EXTERNAL kullanamazsınız.

  • DRY RUN

    Belirtildiğinde, hedef tabloları oluşturmadan veya yükseltmeden, source_table içindeki veya source_schema içindeki tabloların yükseltilip yükseltilemeyeceğini denetler. Bir tablo yükseltilebiliyorsa komut döndürür DRY_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. ile SYNC SCHEMAkullanıldığında, içindeki yönetilen tablolar da dahil olmak üzere tüm tablolara uygulanır source_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 veya EXTERNAL

  • 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ğini upgraded_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 bir DEEP 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çin AS EXTERNAL komutunu SYNC 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ükseltin spark.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
  ------------- ----------- ----------- -------------- ------------- ----------- -----------     ---------------------------------
  ...