Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pengklusteran cairan adalah teknik pengoptimalan tata letak data yang menggantikan partisi tabel dan ZORDER. Ini menyederhanakan manajemen tabel dan mengoptimalkan performa kueri dengan mengatur data secara otomatis berdasarkan kunci pengklusteran.
Tidak seperti pemartisian tradisional, Anda dapat menentukan ulang kunci pengklusteran tanpa menulis ulang data yang ada. Ini memungkinkan tata letak data Anda berkembang bersama dengan mengubah kebutuhan analitik. Pengklusteran cairan berlaku untuk tabel streaming dan tampilan materialisasi.
Important
Pengklusteran cairan umumnya tersedia untuk tabel Delta Lake dan di Pratinjau Umum untuk tabel Apache Iceberg terkelola. Untuk tabel Delta Lake, dukungan GA tersedia dengan Databricks Runtime 15.2 ke atas. Databricks merekomendasikan penggunaan Databricks Runtime terbaru untuk performa terbaik. Untuk tabel Apache Iceberg, Diperlukan Databricks Runtime 16.4 LTS ke atas.
Kapan menggunakan pengklusteran cair
Databricks merekomendasikan pengklusteran cairan untuk semua tabel baru, termasuk tabel streaming dan tampilan materialisasi. Skenario berikut ini terutama mendapat manfaat dari pengklusteran:
- Kueri yang menyaring kolom dengan kardinalitas tinggi.
- Tabel dengan ketimpangan data yang berat.
- Tabel yang berkembang cepat yang membutuhkan upaya pemeliharaan dan penyetelan.
- Tabel dengan persyaratan penulisan paralel.
- Tabel dengan pola akses yang bervariasi atau berubah.
- Tabel di mana kunci partisi umum mungkin mengembalikan hasil dari terlalu banyak atau terlalu sedikit partisi.
Mengaktifkan pengklusteran cairan
Anda dapat mengaktifkan pengklusteran cair pada tabel yang tidak dipartisi yang ada atau selama pembuatan tabel. Pengklusteran tidak kompatibel dengan partisi atau ZORDER. Databricks merekomendasikan agar platform mengelola semua operasi tata letak dan pengoptimalan untuk data dalam tabel Anda. Setelah mengaktifkan liquid clustering, jalankan OPTIMIZE jobs untuk mengkluster data secara bertahap. Lihat Cara memicu pengklusteran.
Membuat tabel dengan pengklusteran
Untuk mengaktifkan pengklusteran cairan, tambahkan CLUSTER BY frasa ke pernyataan pembuatan tabel, seperti pada contoh di bawah ini. Di Databricks Runtime 14.2 ke atas, Anda dapat menggunakan API DataFrame dan Api DeltaTable di Python atau Scala untuk mengaktifkan pengklusteran cairan untuk tabel Delta Lake.
SQL
-- Create an empty Delta table with clustering on col0
CREATE TABLE table1(col0 INT, col1 string) CLUSTER BY (col0);
-- Create table from existing data with clustering
-- Note: CLUSTER BY must appear after table name, not in SELECT clause
CREATE TABLE table2 CLUSTER BY (col0)
AS SELECT * FROM table1;
-- Copy table structure including clustering configuration
CREATE TABLE table3 LIKE table1;
Python
# Create an empty Delta table with clustering on col0
(DeltaTable.create()
.tableName("table1")
.addColumn("col0", dataType = "INT")
.addColumn("col1", dataType = "STRING")
.clusterBy("col0") # Single clustering key
.execute())
# Create clustered table from existing DataFrame
df = spark.read.table("table1")
df.write.clusterBy("col0").saveAsTable("table2")
# Alternative: DataFrameWriterV2 API (:re[DBR] 14.2+)
df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()
Scala
// Create an empty Delta table with clustering on col0
DeltaTable.create()
.tableName("table1")
.addColumn("col0", dataType = "INT")
.addColumn("col1", dataType = "STRING")
.clusterBy("col0")
.execute()
// Create clustered table from existing DataFrame
val df = spark.read.table("table1")
df.write.clusterBy("col0").saveAsTable("table2")
// Alternative: DataFrameWriterV2 API (:re[DBR] 14.2+)
val df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()
Important
Saat menggunakan API DataFrame untuk mengatur kunci pengklusteran, Anda hanya dapat menentukan kolom pengklusteran selama pembuatan tabel atau saat menggunakan overwrite mode (seperti dengan CREATE OR REPLACE TABLE operasi). Anda tidak dapat mengubah kunci pengklusteran saat menggunakan append mode.
Untuk mengubah kunci pengklusteran pada tabel yang ada saat menambahkan data, gunakan perintah SQL ALTER TABLE untuk memodifikasi konfigurasi pengklusteran secara terpisah dari operasi penulisan data Anda. Lihat Mengubah kunci pengklusteran.
Di Databricks Runtime 16.0 ke atas, Anda dapat membuat tabel dengan liquid clustering diaktifkan menggunakan Structured Streaming writes. Databricks merekomendasikan penggunaan Databricks Runtime 16.4 ke atas untuk performa terbaik, seperti dalam contoh berikut:
SQL
CREATE TABLE table1 (
col0 STRING,
col1 DATE,
col2 BIGINT
)
CLUSTER BY (col0, col1);
Python
(spark.readStream.table("source_table")
.writeStream
.clusterBy("column_name")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
)
Scala
spark.readStream.table("source_table")
.writeStream
.clusterBy("column_name")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
Warning
Tabel Delta dengan "liquid clustering" diaktifkan menggunakan "Delta writer" versi 7 dan "reader" versi 3. Klien Delta yang tidak mendukung protokol ini tidak dapat membaca tabel ini. Anda tidak dapat menurunkan versi protokol tabel. Lihat Kompatibilitas dan protokol fitur Delta Lake.
Untuk mengambil alih pengaktifan fitur default (seperti vektor penghapusan), lihat Mengambil alih pengaktifan fitur default (opsional).
Aktifkan pada tabel yang sudah ada
Aktifkan pengklusteran cairan pada tabel Delta yang tidak dipartisi yang ada menggunakan sintaks berikut:
-- Alter an existing table
ALTER TABLE <table_name>
CLUSTER BY (<clustering_columns>)
Untuk Apache Iceberg, Anda harus secara eksplisit menonaktifkan vektor penghapusan dan ID Baris saat mengaktifkan klasterisasi cair pada tabel Iceberg terkelola yang ada.
Note
Perilaku default tidak menerapkan pengklusteran ke data yang ditulis sebelumnya. Untuk memaksakan pengelompokan ulang, gunakan OPTIMIZE FULL atau OPTIMIZE FULL WHERE <predicate>. Lihat Paksa Rekluster.
Menghapus kunci pengklusteran
Untuk menghapus kunci pengklusteran, gunakan sintaks berikut:
ALTER TABLE table_name CLUSTER BY NONE;
Pilih kunci pengklusteran
Petunjuk / Saran
Databricks merekomendasikan penggunaan pengklusteran cairan otomatis untuk tabel yang didukung, yang dengan cerdas memilih kunci pengklusteran berdasarkan pola kueri Anda. Lihat pengklusteran cairan otomatis.
Panduan pemilihan kunci
Saat Anda menentukan kunci pengklusteran secara manual, pilih kolom berdasarkan kolom yang paling sering digunakan dalam filter kueri. Anda dapat menentukan kunci pengklusteran dalam urutan apa pun. Jika dua kolom sangat berkorelasi, Anda hanya perlu menyertakan salah satunya sebagai kunci pengklusteran.
Anda dapat menentukan hingga empat kunci pengklusteran. Untuk tabel yang lebih kecil (kurang dari 10 TB), menggunakan lebih banyak kunci pengklusteran dapat menurunkan performa saat memfilter pada satu kolom. Misalnya, pemfilteran dengan empat kunci berkinerja lebih buruk daripada pemfilteran dengan dua kunci. Namun, ketika ukuran tabel meningkat, perbedaan performa ini menjadi dapat diabaikan untuk kueri kolom tunggal.
Kunci pengklusteran harus berupa kolom yang memiliki statistik yang dikumpulkan. Secara default, 32 kolom pertama dalam tabel Delta memiliki statistik yang dikumpulkan. Lihat Menentukan kolom statistik.
Jenis data yang didukung
Pengklusteran mendukung jenis data ini untuk kunci pengklusteran:
- Date
- Timestamp
- TimestampNTZ (Databricks Runtime 14.3 LTS ke atas)
- String
- Bilangan bulat, Panjang, Pendek, Byte
- Float, Double, Desimal
Migrasi dari partisi atau Z-order
Jika Anda mengonversi tabel yang sudah ada, pertimbangkan rekomendasi berikut:
| Teknik pengoptimalan data saat ini | Rekomendasi untuk kunci pengklusteran |
|---|---|
| Pemartisian Gaya Hive | Gunakan kolom partisi sebagai kunci pengklusteran. |
| Pengindeksan Z-order |
ZORDER BY Gunakan kolom sebagai kunci pengklusteran. |
| Pemartisian gaya Hive dan urutan-Z | Gunakan kolom partisi dan kolom ZORDER BY sebagai kunci pengklusteran. |
| Kolom yang dihasilkan untuk mengurangi kardinalitas (misalnya, tanggal untuk tanda waktu) | Gunakan kolom asli sebagai kunci pengklusteran, dan jangan buat kolom yang dihasilkan. |
Pengklusteran cairan otomatis
Di Databricks Runtime 15.4 LTS ke atas, Anda dapat mengaktifkan pengklusteran cairan otomatis untuk tabel Delta terkelola Katalog Unity. Pengklusteran cairan otomatis memungkinkan Azure Databricks untuk memilih kunci pengklusteran secara cerdas untuk mengoptimalkan performa kueri, menggunakan klausa CLUSTER BY AUTO.
Cara kerja pengklusteran cairan otomatis
Pengklusteran cairan otomatis memberikan pengoptimalan cerdas berdasarkan pola penggunaan Anda:
- Memerlukan pengoptimalan prediktif: Pemilihan kunci otomatis dan operasi pengklusteran berjalan secara asinkron sebagai operasi pemeliharaan. Lihat Pengoptimalan prediktif untuk tabel yang dikelola oleh Unity Catalog.
- Analyzes beban kerja kueri: Azure Databricks menganalisis beban kerja kueri historis tabel dan mengidentifikasi kolom kandidat terbaik untuk pengklusteran.
- Beradaptasi dengan perubahan: Jika pola kueri atau distribusi data Anda berubah dari waktu ke waktu, pengklusteran cairan otomatis memilih kunci baru untuk mengoptimalkan performa.
- Pemilihan berdasarkan biaya: Azure Databricks mengubah kunci pengelompokan hanya ketika penghematan biaya yang diprediksi dari peningkatan skip data melebihi biaya pengelompokan data.
Pengklusteran cairan otomatis mungkin tidak memilih kunci karena alasan berikut:
- Tabel terlalu kecil untuk mendapatkan manfaat dari pengklusteran cairan.
- Tabel sudah memiliki skema pengklusteran yang efektif, baik dari kunci manual sebelumnya atau urutan penyisipan alami yang cocok dengan pola kueri.
- Tabel tidak memiliki kueri yang sering.
- Anda tidak menggunakan Databricks Runtime 15.4 LTS atau lebih tinggi.
Anda dapat menerapkan pengklusteran cairan otomatis untuk semua tabel terkelola Unity Catalog, terlepas dari karakteristik data dan kueri. Heuristik memutuskan apakah itu menguntungkan biaya untuk memilih kunci pengklusteran.
Kompatibilitas versi Databricks Runtime
Anda dapat membaca atau menulis tabel dengan pengklusteran otomatis diaktifkan dari semua versi Databricks Runtime yang mendukung pengklusteran cairan. Namun, pemilihan kunci cerdas bergantung pada metadata yang diperkenalkan dalam Databricks Runtime 15.4 LTS.
Gunakan Databricks Runtime 15.4 LTS atau lebih tinggi untuk memastikan bahwa kunci yang dipilih secara otomatis menguntungkan semua beban kerja Anda dan bahwa beban kerja ini dipertimbangkan saat memilih kunci baru.
Mengaktifkan atau menonaktifkan pengklusteran cairan otomatis
Untuk mengaktifkan atau menonaktifkan pengklusteran cairan otomatis pada tabel baru atau yang sudah ada, gunakan sintaks berikut:
SQL
-- Create an empty table.
CREATE OR REPLACE TABLE table1(column01 int, column02 string) CLUSTER BY AUTO;
-- Enable automatic liquid clustering on an existing table,
-- including tables that previously had manually specified keys.
ALTER TABLE table1 CLUSTER BY AUTO;
-- Disable automatic liquid clustering on an existing table.
ALTER TABLE table1 CLUSTER BY NONE;
-- Disable automatic liquid clustering by setting the clustering keys
-- to chosen clustering columns or new columns.
ALTER TABLE table1 CLUSTER BY (column01, column02);
Jika Anda menjalankan CREATE OR REPLACE table_name tanpa menentukan CLUSTER BY AUTO dan tabel sudah ada serta memiliki pengklusteran cairan otomatis yang diaktifkan, pengaturan AUTO dinonaktifkan dan kolom pengklusteran tidak dipelihara. Untuk mempertahankan pengklusteran cairan otomatis dan kolom pengklusteran yang dipilih sebelumnya, sertakan CLUSTER BY AUTO dalam pernyataan ganti. Saat dipertahankan, pengoptimalan prediktif mempertahankan beban kerja kueri historis untuk tabel guna mengidentifikasi kunci pengklusteran terbaik.
Python
df = spark.read.table("table1")
df.write
.format("delta")
.option("clusterByAuto", "true")
.saveAsTable(...)
# Set clustering columns and auto to provide a hint for initial selection
df.write
.format("delta")
.clusterBy("clusteringColumn1", "clusteringColumn2")
.option("clusterByAuto", "true")
.saveAsTable(...)
# Using DataFrameWriterV2
df.writeTo(...).using("delta")
.option("clusterByAuto", "true")
.create()
# Set clustering columns and auto to provide a hint for initial selection
df.writeTo(...).using("delta")
.clusterBy("clusteringColumn1", "clusteringColumn2")
.option("clusterByAuto", "true")
.create()
# Set clusterByAuto for streaming tables
spark.readStream.table("source_table")
.writeStream
.option("clusterByAuto", "true")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
# Specify a hint for clustering columns with both auto and columns
spark.readStream.table("source_table")
.writeStream
.clusterBy("column1", "column2")
.option("clusterByAuto", "true")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
API Python tersedia di Databricks Runtime 16.4 ke atas. Saat Anda menggunakan .clusterBy bersama dengan .option('clusterByAuto', 'true), perilakunya adalah sebagai berikut:
- Jika ini menetapkan pengklusteran cairan otomatis untuk pertama kalinya, input manual selalu dihormati dan kolom pengklusteran di
.clusterBydiatur. - Jika ini sudah menjadi tabel dengan pengklusteran cairan otomatis, petunjuk menggunakan
.clusterBydapat diterima sekali. Misalnya, kolom yang ditentukan oleh.clusterByhanya diatur jika tabel belum memiliki kolom pengklusteran yang ditetapkan.
Anda dapat menggunakan Python hanya saat membuat atau mengganti tabel. Gunakan SQL untuk mengubah clusterByAuto status tabel yang sudah ada.
Important
Saat menggunakan API DataFrame, clusterByAuto opsi hanya dapat diatur saat menggunakan overwrite mode. Anda tidak dapat mengatur clusterByAuto ketika menggunakan append mode. Pembatasan ini sama seperti saat mengatur kolom pengklusteran secara manual - pengaturan pengklusteran hanya dapat dikonfigurasi selama operasi pembuatan tabel atau penggantian menggunakan overwrite mode.
Sebagai solusinya, jika Anda ingin mengubah clusterByAuto status pada tabel yang ada saat menambahkan data, gunakan perintah SQL ALTER TABLE untuk memodifikasi konfigurasi pengklusteran secara terpisah dari operasi penulisan data Anda.
Periksa apakah pengklusteran otomatis diaktifkan
Untuk memeriksa apakah tabel mengaktifkan pengklusteran cairan otomatis, gunakan DESCRIBE TABLE atau SHOW TBLPROPERTIES.
Jika pengklusteran cairan otomatis diaktifkan, clusterByAuto properti diatur ke true. Properti clusteringColumns menunjukkan kolom pengklusteran saat ini yang dipilih secara otomatis atau manual.
Limitations
Pengklusteran cairan otomatis tidak tersedia untuk Apache Iceberg.
Menulis data ke tabel berkluster
Untuk menulis ke tabel Delta berkluster, Anda harus menggunakan klien penulis Delta yang mendukung semua fitur tabel protokol tulis Delta yang digunakan oleh pengklusteran cairan. Untuk menulis ke tabel Iceberg berkluster, Anda dapat menggunakan Iceberg REST Catalog API Unity Catalog. Pada Azure Databricks, Anda harus menggunakan Databricks Runtime 13.3 LTS ke atas.
Operasi yang mendukung pengklusteran saat menulis
Operasi yang dikelompokkan saat penulisan meliputi hal-hal berikut:
-
INSERT INTOOperasi -
CTASdanRTASpernyataan -
COPY INTOdari format Parquet spark.write.mode("append")
Ambang ukuran untuk pengklusteran
Pengklusteran saat penulisan hanya dipicu ketika data dalam transaksi memenuhi ambang ukuran. Ambang batas ini bervariasi menurut jumlah kolom pengklusteran dan lebih rendah untuk tabel terkelola Katalog Unity daripada tabel Delta lainnya.
| Jumlah kolom pengklusteran | Ukuran ambang batas untuk tabel terkelola Katalog Unity | Ukuran ambang batas untuk tabel Delta lainnya |
|---|---|---|
| 1 | 64 MB | 256 MB |
| 2 | 256 MB | 1 GB |
| 3 | 512 MB | 2 GB |
| 4 | 1 GB | 4 GB |
Karena tidak semua operasi menerapkan pengklusteran cairan, Databricks merekomendasikan untuk sering berjalan OPTIMIZE untuk memastikan bahwa semua data diklusterkan secara efisien.
Beban kerja streaming
Beban kerja Streaming Terstruktur mendukung pengklusteran saat menulis saat Anda mengatur konfigurasi spark.databricks.delta.liquid.eagerClustering.streaming.enabled Spark ke true. Pengklusteran untuk beban kerja ini hanya aktif jika setidaknya salah satu dari lima pembaruan streaming terakhir melebihi ambang batas ukuran dari tabel di atas.
Cara memicu pengklusteran
Pengoptimalan prediktif secara otomatis menjalankan OPTIMIZE perintah untuk tabel yang diaktifkan. Lihat Pengoptimalan prediktif untuk tabel yang dikelola oleh Unity Catalog. Saat menggunakan pengoptimalan Prediktif, Databricks merekomendasikan untuk menonaktifkan pekerjaan terjadwal OPTIMIZE apa pun.
Untuk memicu pengklusteran, Anda harus menggunakan Databricks Runtime 13.3 LTS atau lebih tinggi. Databricks merekomendasikan Databricks Runtime 17.2 ke atas untuk performa yang lebih cepat OPTIMIZE pada tabel besar.
OPTIMIZE Gunakan perintah pada tabel Anda:
OPTIMIZE table_name;
Pengklusteran cairan bertahap, yang berarti bahwa hanya menulis ulang data seperlunya untuk mengakomodasi data yang membutuhkan OPTIMIZE.
OPTIMIZE tidak menulis ulang file data dengan kunci pengklusteran yang tidak cocok dengan data yang diklusterkan. Lihat Memaksa reklustering.
Jika Anda tidak menggunakan pengoptimalan prediktif, Databricks merekomendasikan penjadwalan pekerjaan reguler OPTIMIZE ke data kluster. Untuk tabel yang banyak diperbarui atau disisipkan, Databricks merekomendasikan penjadwalan OPTIMIZE job setiap satu atau dua jam. Karena pengklusteran cairan bersifat inkremental, sebagian besar OPTIMIZE pekerjaan untuk tabel berkluster berjalan dengan cepat.
Pengelompokan ulang paksa
Pada Databricks Runtime 16.0 dan versi yang lebih baru, Anda bisa memaksa penyusunan ulang kluster semua catatan dalam tabel dengan sintaks berikut:
OPTIMIZE table_name FULL;
Important
Menjalankan OPTIMIZE FULL mengelompokkan ulang semua data yang ada seperlunya. Untuk tabel besar yang sebelumnya belum diklusterkan pada kunci yang ditentukan, operasi ini mungkin memakan waktu berjam-jam.
Jalankan OPTIMIZE FULL saat Anda mengaktifkan pengklusteran untuk pertama kalinya atau mengubah kunci pengklusteran. Jika sebelumnya Anda telah menjalankan OPTIMIZE FULL dan belum ada perubahan pada kunci pengklusteran, OPTIMIZE FULL berjalan sama dengan OPTIMIZE. Dalam skenario ini, OPTIMIZE menggunakan pendekatan inkremental dan hanya menulis ulang file yang sebelumnya belum dipadatkan. Selalu gunakan OPTIMIZE FULL untuk memastikan bahwa tata letak data mencerminkan kunci pengklusteran saat ini.
Rekluster parsial
Di Databricks Runtime 18.1 dan versi yang lebih baru, Anda dapat memaksa pengelompokan ulang untuk sebagian catatan menggunakan OPTIMIZE FULL WHERE <predicate>. File disertakan jika ada bagian dari rentangnya yang tumpang tindih dengan predikat . Lihat Parameter.
OPTIMIZE events FULL WHERE event_date >= '2025-01-01';
Membaca data dari tabel terkluster
Anda dapat membaca data dalam tabel Delta berkluster menggunakan klien Delta Lake apa pun yang mendukung vektor penghapusan baca. Dengan menggunakan Iceberg REST Catalog API, Anda dapat membaca data dalam tabel Iceberg berkluster. Pengklusteran cairan meningkatkan performa kueri melalui lompati data otomatis saat memfilter kunci pengklusteran.
SELECT * FROM table_name WHERE cluster_key_column_name = "some_value";
Mengelola kunci pengklusteran
Lihat bagaimana tabel diklusterkan
Anda dapat menggunakan DESCRIBE perintah untuk melihat kunci pengklusteran untuk tabel, seperti dalam contoh berikut:
DESCRIBE TABLE table_name;
DESCRIBE DETAIL table_name;
Mengubah kunci pengklusteran
Anda dapat mengubah kunci pengklusteran untuk tabel kapan saja dengan menjalankan ALTER TABLE perintah, seperti dalam contoh berikut:
ALTER TABLE table_name CLUSTER BY (new_column1, new_column2);
Saat Anda mengubah kunci pengklusteran, operasi berikutnya OPTIMIZE dan tulis menggunakan pendekatan pengklusteran baru, tetapi data yang ada tidak ditulis ulang. Untuk menulis ulang data yang ada dengan kunci pengklusteran yang diperbarui, lihat Memaksa rekluster.
Anda juga dapat menonaktifkan pengklusteran dengan mengatur kunci ke NONE, seperti dalam contoh berikut:
ALTER TABLE table_name CLUSTER BY NONE;
Mengatur kunci kluster agar NONE tidak menulis ulang data berkluster, tetapi mencegah operasi di masa mendatang OPTIMIZE menggunakan kunci pengklusteran.
Menggunakan pengklusteran cairan dari mesin eksternal
Anda dapat mengaktifkan pengklusteran cairan pada tabel Iceberg terkelola dari mesin Iceberg eksternal. Untuk mengaktifkan pengklusteran cairan, tentukan kolom partisi saat membuat tabel. Katalog Unity menginterpretasikan partisi sebagai kunci pengklusteran. Misalnya, jalankan perintah di bawah ini di OSS Spark:
CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY c1;
Untuk menonaktifkan pengklusteran cairan:
ALTER TABLE main.schema.icebergTable DROP PARTITION FIELD c2;
Untuk mengubah kunci pengklusteran menggunakan evolusi partisi Iceberg:
ALTER TABLE main.schema.icebergTable ADD PARTITION FIELD c2;
Jika Anda menentukan partisi menggunakan transformasi wadah, Katalog Unity akan menghilangkan ekspresi dan menggunakan kolom sebagai kunci pengklusteran:
CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY (bucket(c1, 10));
Kompatibilitas untuk tabel dengan pengklusteran cair
Pengklusteran liquid menggunakan fitur tabel Delta Lake yang memerlukan versi Databricks Runtime tertentu untuk membaca dan menulis. Tabel yang dibuat dengan pengklusteran cair di Databricks Runtime 14.1 ke atas menggunakan titik pemeriksaan V2 secara default. Anda dapat membaca dan menulis tabel dengan titik pemeriksaan V2 di Databricks Runtime 13.3 LTS ke atas. Lihat Titik Pemeriksaan V2.
Untuk mendukung pembaca yang menggunakan Databricks Runtime 12.2 LTS ke 13.2, nonaktifkan titik pemeriksaan V2 dan turunkan protokol tabel. Lihat Beralih ke versi klasik.
Mengesampingkan pengaktifan fitur default (opsional)
Anda dapat mengambil alih pengaktifan fitur tabel Delta default selama pengaktifan pengklusteran cairan. Ini mencegah peningkatan protokol pembaca dan penulis yang terkait dengan fitur tabel tersebut. Anda harus memiliki tabel yang sudah ada untuk menyelesaikan langkah-langkah berikut:
Gunakan
ALTER TABLEuntuk mengatur properti tabel yang menonaktifkan satu atau beberapa fitur. Misalnya, untuk menonaktifkan vektor penghapusan, jalankan hal berikut:ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = false);Aktifkan pengklusteran cairan pada tabel dengan menjalankan hal berikut:
ALTER TABLE <table_name> CLUSTER BY (<clustering_columns>)
Tabel berikut ini menyediakan informasi tentang fitur Delta yang dapat Anda ambil alih dan bagaimana pengaktifan memengaruhi kompatibilitas dengan versi Databricks Runtime.
| Fitur Delta | Kompatibilitas runtime | Properti untuk menonaktifkan pengaktifan | Dampak ke pengklusteran cairan jika dinonaktifkan |
|---|---|---|---|
| Vektor penghapusan | Baca dan tulis memerlukan Databricks Runtime 12.2 LTS ke atas. | 'delta.enableDeletionVectors' = false |
Menonaktifkan vektor penghapusan menonaktifkan konkurensi tingkat baris, membuat transaksi dan operasi pengklusteran lebih mungkin bertentangan. Lihat Konkurensi tingkat baris.DELETE, MERGE, dan UPDATE perintah mungkin berjalan lebih lambat. |
| Pelacakan baris data | Penulisan memerlukan Databricks Runtime 13.3 LTS ke atas. Dapat dibaca dari versi Databricks Runtime apa pun. | 'delta.enableRowTracking' = false |
Menonaktifkan pelacakan baris menghentikan konkurensi tingkat baris, membuat transaksi dan operasi pengklusteran lebih mungkin konflik. Lihat Konkurensi tingkat baris. |
| Titik Pemeriksaan V2 | Baca dan tulis memerlukan Databricks Runtime 13.3 LTS ke atas. | 'delta.checkpointPolicy' = 'classic' |
Tidak ada dampak pada perilaku pengklusteran cairan. Lihat Titik Pemeriksaan V2. |
Limitations
- Databricks Runtime 15.1 ke bawah: Pengklusteran saat penulisan tidak mendukung kueri sumber yang mencakup filter, gabungan, atau agregasi.
- Databricks Runtime 15.4 LTS dan di bawah ini: Anda tidak dapat membuat tabel dengan pengklusteran cair diaktifkan menggunakan penulisan Streaming Terstruktur. Anda dapat menggunakan Streaming Terstruktur untuk menulis data ke tabel yang ada dengan pengklusteran cair diaktifkan.
- Apache Iceberg v2: Konkurensi tingkat baris tidak didukung pada tabel Iceberg terkelola dengan Apache Iceberg v2, karena vektor penghapusan dan pelacakan baris tidak didukung pada tabel Iceberg.