Referensi untuk properti tabel

Tabel Delta Lake dan Apache Iceberg menggunakan properti tabel untuk mengonfigurasi perilaku dan fitur, termasuk tata letak data, ukuran file, melompati data, tingkat isolasi, dan mengubah umpan data.

Note

Semua operasi yang mengatur atau memperbarui properti tabel bertentangan dengan operasi tulis bersamaan lainnya, menyebabkannya gagal. Databricks menyarankan Anda memodifikasi properti tabel hanya ketika tidak ada operasi tulis bersamaan pada tabel.

Mengubah properti tabel

Untuk mengubah properti tabel tabel yang ada, gunakan SET TBLPROPERTIES.

Awalan properti Delta dan Iceberg

Tabel Delta Lake dan Apache Iceberg memiliki nama properti tabel yang sama, tetapi memerlukan awalan yang berbeda:

  • Tabel Delta Lake: Gunakan awalan delta.
  • Tabel gunung es: Gunakan awalan iceberg.

Misalnya, untuk mengaktifkan vektor penghapusan pada tabel:

Danau Delta

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Tabel Iceberg

ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

Properti dan SparkSession properti tabel

Setiap tabel memiliki properti tabelnya sendiri yang mengontrol perilakunya. Beberapa SparkSession konfigurasi selalu mengambil alih properti tabel. Misalnya, autoCompact.enabled dan optimizeWrite.enabled aktifkan pemadatan otomatis dan penulisan yang dioptimalkan pada tingkat tersebut SparkSession . Databricks merekomendasikan penggunaan konfigurasi yang berfokus pada tabel untuk sebagian besar beban kerja.

Anda dapat mengatur nilai default untuk tabel baru menggunakan SparkSession konfigurasi. Default ini hanya berlaku untuk tabel baru dan tidak memengaruhi properti tabel yang ada. SparkSession konfigurasi menggunakan awalan yang berbeda dari properti tabel, seperti yang diperlihatkan dalam tabel berikut:

Properti tabel konfigurasi SparkSession
delta.<conf>
iceberg.<conf>
spark.databricks.delta.properties.defaults.<conf>
spark.databricks.iceberg.properties.defaults.<conf>

Misalnya, untuk mengatur appendOnly = true properti untuk semua tabel baru yang dibuat dalam sesi, atur yang berikut ini:

Danau Delta

SET spark.databricks.delta.properties.defaults.appendOnly = true

Tabel Iceberg

SET spark.databricks.iceberg.properties.defaults.appendOnly = true

Pengaturan tabel

Sebagian besar properti tabel berikut tersedia untuk tabel Delta Lake dan Apache Iceberg, kecuali jika ditunjukkan. Gunakan awalan delta. untuk tabel Danau Delta dan iceberg. awalan untuk tabel Iceberg.

Harta benda Deskripsi
autoOptimize.optimizeWrite true untuk mengoptimalkan tata letak file secara otomatis untuk tabel ini selama penulisan.
Lihat Penulisan Teroptimasi.
Jenis data: Boolean
Default: (tidak ada)
dataSkippingNumIndexedCols Jumlah kolom untuk mengumpulkan statistik mengenai penghindaran data. Nilai -1 berarti mengumpulkan statistik untuk semua kolom.
Lihat Data Skipping.
Jenis data: Int
Standar: 32
dataSkippingStatsColumns Daftar nama kolom yang dipisahkan koma untuk mengumpulkan statistik guna meningkatkan fungsionalitas melompati data. Properti ini lebih diutamakan daripada dataSkippingNumIndexedCols.
Lihat Data Skipping.
Jenis data: String
Default: (tidak ada)
deletedFileRetentionDuration Durasi terpendek untuk menyimpan file data yang dihapus secara logis sebelum menghapusnya secara fisik. Ini mencegah kegagalan pada pembaca usang setelah pemadatan atau penulisan ulang partisi.
Databricks merekomendasikan nilai default 7 hari atau lebih tinggi. Jika periode retensi Anda terlalu pendek, pekerjaan yang berlangsung lama mungkin akan memiliki file yang belum disetujui dihapus sebelum pekerjaan selesai.
Lihat Mengonfigurasi retensi data untuk kueri perjalanan lintas waktu.
Jenis data: CalendarInterval
Standar: interval 1 week
enableDeletionVectors true untuk mengaktifkan vektor penghapusan dan I/O prediktif untuk pembaruan.
Lihat Vektor penghapusan di Databricks dan Mengaktifkan vektor penghapusan.
Jenis data: Boolean
Default: Bergantung pada pengaturan admin ruang kerja dan versi Databricks Runtime. Lihat Mengaktifkan vektor penghapusan secara otomatis.
logRetentionDuration Berapa lama riwayat tabel harus disimpan. VACUUM operasi menggantikan ambang retensi ini.
Databricks secara otomatis membersihkan entri log yang lebih lama dari interval retensi setiap kali titik pemeriksaan ditulis. Mengatur properti ini ke nilai yang besar akan mempertahankan banyak catatan log. Ini tidak memengaruhi performa karena operasi terhadap log adalah waktu konstan. Operasi pada riwayat bersifat paralel tetapi menjadi lebih mahal saat ukuran log meningkat.
Lihat Mengonfigurasi retensi data untuk kueri perjalanan lintas waktu.
Jenis data: CalendarInterval
Standar: interval 30 days
minReaderVersion (Hanya Delta Lake) Versi pembaca protokol minimum yang diperlukan untuk dibaca dari tabel ini.
Databricks merekomendasikan untuk tidak mengonfigurasi properti ini secara manual.
Lihat Kompatibilitas dan protokol fitur Delta Lake.
Jenis data: Int
Standar: 1
minWriterVersion (Hanya Delta Lake) Versi penulis protokol minimum yang diperlukan untuk menulis ke tabel ini.
Databricks merekomendasikan untuk tidak mengonfigurasi properti ini secara manual.
Lihat Kompatibilitas dan protokol fitur Delta Lake.
Jenis data: Int
Standar: 2
format-version (Hanya tabel terkelola Apache Iceberg) Versi format tabel Iceberg.
Databricks merekomendasikan untuk tidak mengonfigurasi properti ini secara manual.
Lihat Menggunakan fitur Apache Iceberg v3.
Jenis data: Int
Standar: 2
randomizeFilePrefixes true untuk menghasilkan awalan acak untuk jalur file alih-alih informasi partisi.
Jenis data: Boolean
Standar: false
targetFileSize Ukuran file target dalam byte atau unit yang lebih tinggi untuk penyetelan file. Misalnya, 104857600 (byte) atau 100mb.
Lihat Mengontrol ukuran file data.
Jenis data: String
Default: (tidak ada)
parquet.compression.codec Codec kompresi data untuk tabel.
Nilai yang valid: ZSTD, , SNAPPYGZIP, LZ4, BROTLI (dukungan bervariasi menurut format)
Properti ini memastikan bahwa semua penulisan di masa mendatang ke tabel menggunakan codec yang dipilih, menggantikan pengaturan bawaan kluster atau sesi (spark.sql.parquet.compression.codec). Namun, pengaturan DataFrame .write.option("compression", "...") satu kali masih diutamakan. Tersedia di Databricks Runtime 16.0 dan yang lebih baru. Perhatikan bahwa file yang ada tidak ditulis ulang secara otomatis. Untuk mengkompresi ulang data yang ada dengan format yang Anda pilih, gunakan OPTIMIZE table_name FULL.
Jenis data: String
Standar: ZSTD
parquet.format.version (Hanya Delta Lake) Versi format Parquet yang digunakan saat menulis file data. Mengatur ini untuk 2.12.0 mengaktifkan pengodean tingkat lanjut, header halaman data v2, dan INT64 tanda waktu, yang dapat meningkatkan performa kueri dan mengurangi jejak penyimpanan.
Nilai yang valid adalah 1.0.0 dan 2.12.0, yang sesuai dengan rilis dari format Apache Parquet.
Properti ini dapat diatur di tabel Delta Lake dan Apache Iceberg. Beberapa pembaca OSS Iceberg mungkin tidak mendukung pengodean Parquet v2. Lihat Batasan.
Lihat Parquet v2.
Jenis data: String
Standar: 1.0.0
appendOnly true untuk membuat tabel tambahan saja. Tabel khusus tambahan tidak memperbolehkan penghapusan rekaman yang ada atau memperbarui nilai yang ada.
Jenis data: Boolean
Standar: false
autoOptimize.autoCompact Secara otomatis menggabungkan file kecil dalam partisi tabel untuk mengurangi masalah file kecil. Menerima (disarankan auto ), true, legacy, atau false.
Lihat Pemadatan otomatis.
Jenis data: String
Default: (tidak ada)
checkpoint.writeStatsAsJson true untuk menulis statistik file pada titik pemeriksaan dalam format JSON untuk stats kolom.
Jenis data: Boolean
Standar: false
checkpoint.writeStatsAsStruct true untuk menulis statistik file ke titik pemeriksaan dalam format struct untuk kolom stats_parsed dan menulis nilai partisi sebagai struct untuk partitionValues_parsed.
Jenis data: Boolean
Standar: true
checkpointPolicy classic untuk titik pemeriksaan klasik. v2 untuk titik pemeriksaan v2.
Lihat Titik Pemeriksaan V2 dan Kompatibilitas untuk tabel dengan pengklusteran cairan.
Jenis data: String
Standar: classic
columnMapping.mode Mengaktifkan pemetaan kolom untuk kolom tabel dan kolom Parquet terkait yang menggunakan nama yang berbeda. Nilai yang valid adalah none, name, dan id.
Lihat mengganti nama dan menghapus kolom dengan menggunakan pemetaan kolom Delta Lake.
Catatan: Mengaktifkan columnMapping.mode secara otomatis mengaktifkan randomizeFilePrefixes.
Jenis data: DeltaColumnMappingMode
Standar: none
compatibility.symlinkFormatManifest.enabled (Hanya Delta Lake) true untuk mengonfigurasi tabel Delta Lake sehingga semua operasi tulis pada tabel secara otomatis memperbarui manifes.
Jenis data: Boolean
Standar: false
enableChangeDataFeed true untuk mengaktifkan perubahan umpan data.
Lihat Menggunakan umpan data perubahan.
Jenis data: Boolean
Standar: false
enableTypeWidening true untuk mengaktifkan perluasan tipe.
Lihat Pelebaran tipe.
Jenis data: Boolean
Standar: false
isolationLevel Tingkat isolasi transaksi dari modifikasi yang dilakukan oleh transaksi bersamaan.
Nilai yang berlaku adalah Serializable atau WriteSerializable.
Lihat Tingkat isolasi (WriteSerializable dan Serializable).
Jenis data: String
Standar: WriteSerializable
randomPrefixLength Jumlah karakter yang dihasilkan untuk awalan acak ketika randomizeFilePrefixes adalah true.
Jenis data: Int
Standar: 2
setTransactionRetentionDuration Durasi terpendek di mana rekam jepret baru mempertahankan pengidentifikasi transaksi (misalnya, SetTransactions). Cuplikan baru berakhir dan mengabaikan pengidentifikasi transaksi yang lebih lama dari atau sama dengan durasi yang ditetapkan oleh properti ini. Pengidentifikasi SetTransaction digunakan untuk memastikan penulisan data idempoten. Lihat Menggunakan foreachBatch untuk penulisan tabel idempotensi untuk detailnya.
Jenis data: CalendarInterval
Default: (tidak ada)