REPAIR TABLE

Şunun için geçerlidir:Evet olarak işaretlendi Databricks SQL Evet olarak işaretlendi Databricks Runtime

Bu komut, tabloların bölümlerini onarıyor veya değiştirir.

Delta Lake ifadesi ile tablo meta verilerine dayanarak katalog hizmetini güncelleyin veya Iceberg okumalarına uygun tablolar için Apache Iceberg meta verileri oluşturun. Delta Lake olmayan tabloların bölümlerini değiştirirken SYNC METADATA kullanmayın.

Desteklenen işlevsellik, tabloların Unity Kataloğu'nda mı yoksa Hive meta veri deposunda mı kayıtlı olduğuna ve tabloların Delta Lake tarafından desteklenip desteklenmediğine bağlıdır.

Syntax

[ MSCK ] REPAIR TABLE table_name
{
    [ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}

onay işareti evet için Databricks SQL onay işareti evet Databricks Runtime 12.2 LTS ve üstü MSCK opsiyoneldir.

Parameters

  • table_name

    Tablonun adı. Tablo bulunamazsa Azure Databricks bir TABLE_OR_VIEW_NOT_FOUND hatası oluşturur.

  • ADDveya veya DROPSYNCPARTITIONS

    Şunun için geçerlidir:evet olarak işaretlendi Databricks SQL evet olarak işaretlendi Databricks Runtime 10.4 LTS ve üzeri

    PARTITIONED BY yan tümcesini kullanarak Delta olmayan bir tablo oluştururken bölümler oluşturulur ve Hive meta veri deposuna kaydedilir. Ancak, bölümlenmiş tabloyu mevcut verilerden oluşturursanız bölümler Hive meta veri deposuna otomatik olarak kaydedilmez. Bölümleri kaydetmek için komutunu çalıştırın MSCK REPAIR TABLE .

    Bölümleri kurtarmanın bir diğer yolu da RECOVER PARTITIONS kullanmaktır.

    Tablo önbelleğe alınmışsa, komut tablonun önbelleğe alınmış verilerini ve buna başvuran tüm bağımlıları temizler. Tabloya veya bağımlılara bir sonraki erişimde, önbellek dolar.

    • ADD komutu, temel tablo klasöründeki hiçbir tablo bölümüne ait olmayan tüm alt klasörler için oturum kataloğuna yeni bölümler ekler. Başka seçenek belirtilmezse EKLE varsayılan bağımsız değişkendir.
    • DROP komutu, oturum kataloğundaki dosya sisteminde mevcut olmayan konumlara sahip tüm bölümleri bırakır.
    • SYNC DROP ve ADD'in birleşimidir.
  • SYNC METADATA

    Yalnızca Delta Lake.

    Yapılandırma spark.databricks.delta.catalog.update.enabled olarak ayarlanırsa true, hedef tablo meta veri güncelleştirmeleri katalog hizmetiyle otomatik olarak eşitlenir. REPAIR TABLE table_name SYNC METADATA kullanarak aksi takdirde manuel bir senkronizasyon gerekebilir.

    Hedef tablonun işlem günlüğünü okur ve katalog hizmetindeki meta veri bilgilerini güncelleştirir. Bu komutu çalıştırmak için hedef tabloda MODIFY ve SELECT ayrıcalıklarına ve üst şema ve katalogda USE SCHEMA ve USE CATALOG ayrıcalıklarına sahip olmanız gerekir.

    Databricks Runtime 16.1 ve sonraki sürümlerde bu bağımsız değişken Hive meta veri deposuyla çalışır. Hive meta veri deposu tablolarında KULLANIM ve MODIFI ayrıcalıklarına sahip olmanız gerekir.

    Iceberg okumaları etkinleştirilirse (Unity Kataloğu gerektirir), SYNC METADATA mevcut Delta meta verilerinin Iceberg meta verisine manuel dönüştürülmesini tetikler ve en son Iceberg sürümünü Unity Catalog Iceberg uç noktası için senkronize eder. Bkz. Iceberg istemcileri ile Delta Lake tablolarını okuma.

    Unity Kataloğu izin modelini Hive meta veri deposu federasyonu kullanılarak oluşturulmuş yabancı bir katalogdan okuduğumuz sığ kopyalara uygulamak için REPAIR TABLE table_name SYNC METADATA kullanabilirsiniz. Bkz. Sığ klonlarla çalışma.

Örnekler (Delta Lake olmayan tablolar)

-- create a partitioned table from existing data /tmp/namesAndAges.parquet
> CREATE TABLE t1 (name STRING, age INT) USING parquet PARTITIONED BY (age)
  LOCATION "/tmp/namesAndAges.parquet";

-- SELECT * FROM t1 does not return results
> SELECT * FROM t1;

-- run MSCK REPAIR TABLE to recovers all the partitions
> MSCK REPAIR TABLE t1;

-- SELECT * FROM t1 returns results
> SELECT * FROM t1;
    name age
  ------- ---
  Michael  20
   Justin  19
     Andy  30

Örnek (Unity Katalog tablosu)

-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA