Referensi untuk properti tabel

Delta Lake dan Apache Iceberg menggunakan properti tabel untuk mengontrol perilaku dan fitur tabel. Properti ini mungkin memiliki arti khusus dan memengaruhi perilaku ketika ditetapkan.

Catatan

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.

Format Delta dan Iceberg

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

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

Contohnya:

  • Untuk mengaktifkan vektor penghapusan pada tabel Delta: delta.enableDeletionVectors
  • Untuk mengaktifkan vektor penghapusan pada tabel Iceberg: iceberg.enableDeletionVectors

Properti tabel dan properti SparkSession

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

Anda dapat mengatur nilai default untuk tabel baru menggunakan konfigurasi SparkSession. Default ini hanya berlaku untuk tabel baru dan tidak memengaruhi properti tabel yang ada. Konfigurasi SparkSession 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:

-- For Delta tables
SET spark.databricks.delta.properties.defaults.appendOnly = true

-- For Iceberg tables
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 Delta dan iceberg. awalan untuk tabel Iceberg.

Properti Description
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
Bawaan: 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 waktu.
Jenis data: CalendarInterval
Bawaan: 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 Otomatis mengaktifkan vektor penghapusan.
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 waktu.
Jenis data: CalendarInterval
Bawaan: 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
Bawaan: 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
Bawaan: 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
Bawaan: 2
randomizeFilePrefixes true untuk menghasilkan awalan acak untuk jalur file alih-alih informasi partisi.
Jenis data: Boolean
Bawaan: 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
Bawaan: ZSTD
parquet.format.version (Hanya Delta Lake) Versi format Parquet yang digunakan saat menulis file data. Menentukan 2.12.0 hasil dalam Databricks Runtime menggunakan pengodean Parquet dan header halaman data yang lebih canggih.
Nilai yang valid adalah 1.0.0 dan 2.12.0, yang sesuai dengan rilis dari format Apache Parquet.
Properti ini hanya untuk tabel Delta. Jangan atur properti ini untuk Iceberg, tabel UniForm, atau tabel yang diakses oleh mesin Runtime non-Databricks.
Jenis data: String
Bawaan: 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
Bawaan: 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
Bawaan: 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
Bawaan: 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
Bawaan: 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 Ganti Nama dan hapus kolom dengan pemetaan kolom Delta Lake.
Catatan: Mengaktifkan columnMapping.mode secara otomatis mengaktifkan randomizeFilePrefixes.
Jenis data: DeltaColumnMappingMode
Bawaan: none
compatibility.symlinkFormatManifest.enabled (Hanya Delta Lake) true untuk mengonfigurasi tabel Delta sehingga semua operasi tulis pada tabel secara otomatis memperbarui manifes.
Jenis data: Boolean
Bawaan: false
enableChangeDataFeed true untuk mengaktifkan perubahan umpan data.
Lihat Mengaktifkan umpan data perubahan.
Jenis data: Boolean
Bawaan: false
enableTypeWidening true untuk mengaktifkan perluasan tipe.
Lihat Pelebaran tipe.
Jenis data: Boolean
Bawaan: false
isolationLevel Tingkat isolasi transaksi dari modifikasi yang dilakukan oleh transaksi bersamaan.
Nilai yang valid adalah Serializable dan WriteSerializable.
Lihat Tingkat isolasi (WriteSerializable dan Serializable).
Jenis data: String
Bawaan: WriteSerializable
randomPrefixLength Jumlah karakter yang dihasilkan untuk awalan acak ketika randomizeFilePrefixes adalah true.
Jenis data: Int
Bawaan: 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)