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.
Tabel terkelola Unity Catalog adalah jenis tabel default dan direkomendasikan di Azure Databricks untuk Delta Lake dan Apache Iceberg. Unity Catalog mengelola semua tanggung jawab baca, tulis, penyimpanan, dan pengoptimalan. Lihat Mengonversi tabel Delta Lake eksternal atau asing ke tabel terkelola Unity Catalog.
File data untuk tabel terkelola disimpan dalam skema atau katalog yang berisinya. Lihat Menentukan lokasi penyimpanan terkelola di Unity Catalog.
Dibandingkan dengan tabel eksternal dan asing , tabel yang dikelola lebih murah untuk disimpan dan dikueri, memelihara dan mengoptimalkan diri secara otomatis, serta tetap dapat diakses oleh klien eksternal melalui API terbuka.
Anda dapat bekerja dengan tabel terkelola di semua bahasa dan produk yang didukung di Azure Databricks. Anda memerlukan hak istimewa tertentu untuk membuat, memperbarui, menghapus, atau mengkueri tabel terkelola. Lihat Kelola hak akses di Unity Catalog.
Note
Halaman ini hanya menjelaskan tabel terkelola Katalog Unity. Untuk tabel terkelola di metastore Apache Hive warisan, lihat Objek database di metastore Apache Hive warisan.
Manfaat tabel terkelola Unity Catalog
Tabel terkelola Unity Catalog mengoptimalkan biaya penyimpanan dan kecepatan kueri, dan memungkinkan interoperabilitas dengan alat pihak ketiga untuk Delta Lake dan Apache Iceberg. Untuk menyederhanakan manajemen dan performa data, tabel terkelola ini menggunakan teknologi yang didukung AI, seperti pemadatan ukuran file dan pengumpulan statistik cerdas.
Tabel terkelola mendukung interoperabilitas dengan mengizinkan akses dari klien Delta Lake dan Apache Iceberg. Lihat Mengakses data Databricks dengan menggunakan sistem eksternal.
Fitur berikut ini unik untuk tabel terkelola Unity Catalog, dan tidak tersedia untuk tabel eksternal dan tabel asing:
| Feature | Benefits | Konfigurasi |
|---|---|---|
| Penerapan katalog | Memungkinkan transaksi multi-pernyataan lintas tabel, perencanaan kueri yang lebih cepat, perubahan skema dan batasan yang dapat ditegakkan, serta penulisan aman dari mesin eksternal. | Dinonaktifkan secara default. Untuk mengaktifkannya, atur properti tabel delta.feature.catalogManaged. Lihat Aktifkan komit katalog. |
| Pengoptimalan prediktif | Secara otomatis mengoptimalkan tata letak data dan komputasi menggunakan AI, tanpa operasi pemeliharaan manual. Databricks merekomendasikan untuk mengaktifkan pengoptimalan prediktif untuk semua tabel terkelola untuk mengurangi biaya penyimpanan dan komputasi. | Diaktifkan secara default untuk akun yang dibuat pada atau setelah 11 November 2024. Azure Databricks secara bertahap meaktifkannya untuk akun yang sudah ada. Untuk mengonfigurasi, lihat Mengaktifkan pengoptimalan prediktif. |
| Transaksi multi-pernyataan | Jalankan beberapa pernyataan SQL di satu atau lebih tabel sebagai satu commit atomik dengan jaminan ACID. Semua perubahan berhasil bersama-sama atau digulung balik bersama-sama. Gunakan untuk prosedur tersimpan dan skrip SQL. | Dinonaktifkan secara default. Untuk memilih mode transaksi, lihat Mode transaksi. Operasi tulis ke tabel Apache Iceberg terkelola berada dalam Pratinjau Privat. |
| Pengklusteran cairan otomatis | Untuk tabel dengan optimasi prediktif, secara otomatis memilih dan memperbarui kunci klaster seiring perubahan pola kueri untuk meningkatkan performa dan menurunkan biaya. | Dinonaktifkan secara default. Untuk mengonfigurasi, lihat Mengaktifkan pengklusteran cairan. |
| Penembolokan metadata | Caching dalam memori metadata transaksi meningkatkan kinerja kueri dengan meminimalkan permintaan ke log transaksi yang tersimpan di cloud. | Diaktifkan secara default. Tidak dapat dikonfigurasi. |
| Indeks pencarian teks lengkap | Mempercepat pencarian substring dan kata kunci pada kolom teks menggunakan fungsi search dan isearch. Azure Databricks melewati file yang tidak dapat berisi baris yang cocok, sehingga mengurangi jumlah data yang dipindai. |
Dinonaktifkan secara default. Buat dengan CREATE SEARCH INDEX.Dalam tahap Beta. Memerlukan Databricks Runtime 18.2 ke atas. |
Penghapusan file otomatis setelah DROP TABLE perintah |
Ketika Anda menghapus tabel terkelola, Azure Databricks menghapus file data di penyimpanan cloud setelah periode pemulihan berakhir (default 7 hari), sehingga mengurangi biaya penyimpanan. Untuk tabel eksternal, Anda harus menghapus file secara manual dari wadah penyimpanan Anda. | Diaktifkan secara default. Anda dapat mengonfigurasi periode pemulihan di tingkat katalog atau skema. Lihat Menghilangkan tabel terkelola. |
Mengakses data Databricks menggunakan sistem eksternal
Tabel terkelola mendukung interoperabilitas dengan mengizinkan akses dari klien Delta Lake dan Apache Iceberg.
Melalui API terbuka dan penyediaan kredensial, Unity Catalog memungkinkan mesin eksternal seperti Trino, DuckDB, Apache Spark, Daft, serta mesin yang terintegrasi dengan katalog REST Iceberg, seperti Dremio, untuk mengakses tabel terkelola. Untuk klien eksternal yang tidak mendukung API terbuka, Anda dapat menggunakan Mode Kompatibilitas untuk membaca tabel terkelola menggunakan klien Delta Lake atau Apache Iceberg apa pun. OpenSharing, protokol sumber terbuka, memungkinkan berbagi data yang aman dan diatur dengan mitra dan platform eksternal.
Lihat integrasi untuk daftar mesin eksternal yang didukung, atau periksa dokumentasi mesin Anda jika tidak disertakan dalam daftar ini.
API terbuka berikut ini memungkinkan sistem eksternal mengakses tabel terkelola Katalog Unity:
- Unity REST API telah membaca, menulis, dan membuat akses untuk klien Delta Lake ke tabel Delta Lake terkelola.
- Iceberg REST Catalog (IRC) menyediakan akses baca, tulis, dan pembuatan tabel bagi klien Apache Iceberg ke tabel Apache Iceberg terkelola, serta akses baca-saja ke tabel Delta Lake dengan akses baca Apache Iceberg yang diaktifkan.
Kedua API mendukung penyediaan kredensial, yang menyediakan kredensial sementara yang memiliki cakupan spesifik dan mewarisi hak istimewa dari prinsipal Azure Databricks yang meminta, mempertahankan kontrol tata kelola serta keamanan.
OpenSharing adalah protokol sumber terbuka yang memungkinkan akses data yang aman dan diatur ke mitra dan platform eksternal. Anda dapat menggunakan OpenSharing untuk memberi mitra akses baca-saja sementara.
Semua operasi baca dan tulis ke tabel terkelola harus menggunakan nama tabel dan nama katalog serta skema jika ada. Contohnya, catalog_name.schema_name.table_name. Akses berbasis jalur ke tabel terkelola Unity Catalog tidak didukung (kecuali dalam Mode Kompatibilitas) karena melewati kontrol akses Katalog Unity dan mencegah fitur tabel terkelola berfungsi dengan baik.
Membuat tabel terkelola
Untuk membuat tabel terkelola, Anda harus memiliki:
-
USE SCHEMApada skema induk tabel. -
USE CATALOGpada katalog induk tabel. -
CREATE TABLEpada skema induk tabel.
Gunakan sintaks berikut untuk membuat tabel terkelola kosong. Ganti nilai placeholder ini:
-
<catalog-name>: Nama katalog yang akan berisi tabel. -
<schema-name>: Nama skema yang berisi tabel. -
<table-name>: Nama untuk tabel. -
<column-specification>: Nama dan jenis data setiap kolom.
SQL
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
);
-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
)
USING iceberg;
Python
Buat tabel Delta Lake terkelola menggunakan saveAsTable():
from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField("<column-name>", StringType())])
spark.createDataFrame([], schema).write \
.saveAsTable("<catalog-name>.<schema-name>.<table-name>")
Atau, gunakan DeltaTableBuilder API untuk opsi khusus Delta seperti kolom yang dihasilkan dan properti tabel:
from delta.tables import DeltaTable
DeltaTable.create(spark) \
.tableName("<catalog-name>.<schema-name>.<table-name>") \
.addColumn("<column-name>", "<data-type>") \
.property("<key>", "<value>") \
.execute()
Buat tabel Apache Iceberg terkelola:
from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField("<column-name>", StringType())])
spark.createDataFrame([], schema).write \
.format("iceberg") \
.saveAsTable("<catalog-name>.<schema-name>.<table-name>")
Untuk mempertahankan performa pada baca dan tulis, Azure Databricks secara berkala menjalankan operasi untuk mengoptimalkan metadata tabel Apache Iceberg terkelola. Tugas ini dilakukan menggunakan komputasi tanpa server, yang memiliki MODIFY izin pada tabel Apache Iceberg. Operasi ini hanya menulis ke metadata tabel, dan komputasi hanya mempertahankan izin ke tabel selama durasi pekerjaan.
Note
Untuk membuat tabel Apache Iceberg, tentukan USING icebergsecara eksplisit . Jika tidak, Azure Databricks membuat tabel Delta Lake secara default.
Anda dapat membuat tabel terkelola dari hasil kueri atau operasi penulisan DataFrame. Artikel berikut menunjukkan beberapa pola yang dapat Anda gunakan untuk membuat tabel terkelola di Azure Databricks:
Untuk membuat salinan tabel terkelola yang sudah ada, gunakan kloning. Tabel Delta Lake terkelola mendukung kloning penuh dan kloning dangkal. Tabel Apache Iceberg terkelola hanya mendukung kloning mendalam. Lihat Mengkloning tabel di Azure Databricks dan Mengkloning tabel Iceberg terkelola.
Hapus tabel terkelola
Untuk menghapus tabel terkelola, Anda harus memiliki:
-
MANAGEpada tabel atau Anda harus menjadi pemilik tabel. -
USE SCHEMApada skema induk tabel. -
USE CATALOGpada katalog induk tabel.
Untuk menghilangkan tabel terkelola, jalankan perintah berikut:
SQL
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Python
spark.sql("DROP TABLE IF EXISTS catalog_name.schema_name.table_name")
Atau, dalam Databricks Runtime 18.2 ke atas, gunakan spark.catalog.dropTable():
spark.catalog.dropTable("catalog_name.schema_name.table_name", ifExists=True)
Katalog Unity mendukung perintah UNDROP TABLE untuk memulihkan tabel terkelola yang tidak sengaja dihapus. Secara default, tabel dapat dipulihkan selama 7 hari setelah dihilangkan. Setelah periode pemulihan berakhir, Azure Databricks menghapus file data yang mendasar dari penyewa cloud Anda dalam waktu 48 jam.
Mengonfigurasi periode pemulihan
Important
Periode pemulihan yang dapat dikonfigurasi ada di Pratinjau Umum.
Anda dapat mengonfigurasi berapa lama tabel terkelola yang dihilangkan tetap dapat dipulihkan di tingkat katalog atau skema. Jika periode pemulihan diatur di kedua tingkat, pengaturan tingkat skema lebih diutamakan untuk tabel dalam skema tersebut.
Untuk mengonfigurasi periode pemulihan, Anda harus memiliki MANAGE hak istimewa atau kepemilikan pada katalog atau skema. Pengaturan ini hanya berlaku untuk tabel yang dihilangkan setelah dikonfigurasi. Ini tidak memengaruhi tabel yang sudah dihilangkan.
Masa pemulihan bisa 0 jam, yang menonaktifkan pemulihan, atau 7 hingga 30 hari. Periode yang lebih lama melindungi dari penghapusan data penting secara tidak sengaja, sedangkan periode yang lebih pendek menghapus data yang sudah dihapus lebih cepat untuk menghemat biaya penyimpanan dalam pipeline ETL yang sering membuat dan menghapus tabel. Jika disetel ke 0, tabel yang dihapus tidak dapat dipulihkan menggunakan UNDROP. Azure Databricks menghapus file data dari penyimpanan cloud dalam waktu 48 jam setelah pelepasan.
Untuk mengatur periode pemulihan, gunakan ALTER CATALOG atau ALTER SCHEMA dengan RETAIN DROPPED TO klausa:
SQL
-- Set a 30-day recovery period on a catalog
ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS;
-- Set a 7-day recovery period on a schema (overrides the catalog setting)
ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS;
Python
spark.sql("ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS")
spark.sql("ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS")
Anda juga dapat mengatur periode pemulihan saat membuat katalog atau skema dengan RETAIN DROPPED FOR klausa:
SQL
CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS;
CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS;
Python
spark.sql("CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS")
spark.sql("CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS")
Untuk memeriksa periode pemulihan saat ini, jalankan DESCRIBE EXTENDED. Keluaran mencakup baris Recovery Period Hours:
SQL
DESCRIBE CATALOG EXTENDED my_catalog;
DESCRIBE SCHEMA EXTENDED my_catalog.my_schema;
Python
spark.sql("DESCRIBE CATALOG EXTENDED my_catalog").show()
spark.sql("DESCRIBE SCHEMA EXTENDED my_catalog.my_schema").show()