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ı 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 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, kullanıcı, config olduğunda trueSYNC 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.

    • target_schema

      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, ile eşleşecek source_tableşekilde değiştirilir ve kullanıcının da tabloya sahip olması gerekir. Tablo yoksa oluşturulur.

    • source_table

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

  • müdür

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

  • DRY RUN

    Belirtildiğinde, hedef tabloları oluşturmadan veya yükseltmeden içindeki source_schema veya tablolarının yükseltilip source_table 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.

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 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.

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ğini upgraded_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ğiyle DEEP CLONE bir yönetilen tablo oluşturun. Alternatif olarak, Unity Kataloğu'nda AS EXTERNAL bir dış tablo oluşturmak için komutuyla SYNC 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
  ------------- ----------- ----------- -------------- ------------- ----------- -----------     ---------------------------------
  ...