Bagikan melalui


REPAIR TABLE

Berlaku untuk:dicentang ya Databricks SQL dicentang ya Databricks Runtime

Perintah ini memperbaiki atau memodifikasi partisi untuk tabel.

Gunakan klausa SYNC METADATA dengan Delta Lake untuk memperbarui layanan katalog berdasarkan metadata tabel, atau untuk menghasilkan metadata Apache Iceberg bagi tabel yang diaktifkan untuk pembacaan dengan Iceberg. Jangan gunakan SYNC METADATA saat Anda memodifikasi partisi untuk tabel non-Delta Lake.

Fungsionalitas yang didukung tergantung pada apakah tabel terdaftar di Unity Catalog atau Hive metastore dan apakah tabel didukung oleh Delta Lake.

Sintaks

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

Untuk Databricks SQL yang ditandai "ya" serta Databricks Runtime 12.2 LTS ke atas, check marked yes bersifat opsional.

Parameter-parameternya

  • table_name

    Nama dari tabel tersebut. Jika tabel tidak dapat ditemukan, Azure Databricks menimbulkan kesalahan TABLE_OR_VIEW_NOT_FOUND .

  • ADDatau atau DROPSYNCPARTITIONS

    Berlaku untuk:dicentang ya Databricks SQL dicentang ya Databricks Runtime 10.4 LTS ke atas

    Saat membuat tabel non-Delta menggunakan klausa PARTITIONED BY, partisi dihasilkan dan didaftarkan di metastore Apache Hive. Namun, jika Anda membuat tabel yang dipartisi dari data yang ada, partisi tidak terdaftar secara otomatis di metastore Apache Hive. Jalankan MSCK REPAIR TABLE untuk mendaftarkan partisi.

    Cara lain untuk memulihkan partisi adalah dengan menggunakan ALTER TABLE RECOVER PARTITIONS.

    Jika tabel di-cache, perintah menghapus data yang di-cache tabel dan semua dependen yang merujuk ke tabel tersebut. Cache akan terisi ketika tabel atau dependennya diakses berikutnya.

    • Perintah ADD menambahkan partisi baru ke katalog sesi untuk semua sub-folder di folder tabel dasar yang bukan milik partisi tabel apa pun. ADD adalah argumen default jika tidak ada opsi lain yang ditentukan.
    • Perintah DROP menghilangkan semua partisi dari katalog sesi yang memiliki lokasi yang tidak ada dalam sistem file.
    • SYNC adalah kombinasi dari DROP dan ADD.
  • SYNC METADATA

    Delta Lake saja.

    Jika konfigurasi spark.databricks.delta.catalog.update.enabled diatur ke true, pembaruan metadata tabel target secara otomatis disinkronkan ke layanan katalog. Jika tidak, sinkronisasi manual yang menggunakan REPAIR TABLE table_name SYNC METADATA mungkin diperlukan.

    Membaca log transaksi tabel target dan memperbarui info metadata di layanan katalog. Untuk menjalankan perintah ini, Anda harus memiliki hak istimewa MODIFIKASI dan SELECT pada tabel target dan hak istimewa USE SCHEMA dan USE CATALOG pada skema dan katalog induk.

    Argumen ini kompatibel dengan metastore Apache Hive di Databricks Runtime 16.1 atau yang lebih tinggi. Untuk tabel metastore Hive, Anda harus memiliki izin PENGGUNAAN dan MODIFIKASI.

    Jika Delta UniForm diaktifkan (memerlukan Unity Catalog), SYNC METADATA memicu konversi manual metadata Delta saat ini ke metadata Iceberg dan menyinkronkan versi Iceberg terbaru untuk titik akhir Unity Catalog Iceberg. Lihat Membaca tabel Delta dengan klien Iceberg.

    Anda dapat menggunakan REPAIR TABLE table_name SYNC METADATA untuk menerapkan model izin Unity Catalog ke salinan dangkal yang Anda baca dari katalog asing yang dibuat menggunakan federasi metastore Hive. Lihat Bekerja dengan klon dangkal.

Contoh (tabel non-Delta Lake)

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

Contoh (tabel Katalog Unity)

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