Bagikan melalui


Bekerja dengan tabel eksternal

Di Unity Catalog, tabel eksternal menyimpan file datanya di penyimpanan objek cloud dalam tenant cloud Anda. Katalog Unity terus mengelola metadata tabel, memastikan tata kelola data penuh di semua kueri. Namun, ini tidak mengelola siklus hidup, pengoptimalan, lokasi penyimpanan, atau tata letak data.

Saat Anda menentukan tabel eksternal Unity Catalog, Anda harus menentukan lokasi penyimpanan. Lokasi ini adalah lokasi eksternal yang terdaftar di Unity Catalog. Saat Anda menghapus tabel eksternal, Katalog Unity menghapus metadata tabel tetapi tidak menghapus file data yang mendasar.

Artikel ini berfokus pada tabel eksternal Unity Catalog. Tabel eksternal dalam metastore Apache Hive lama memiliki perilaku yang berbeda. Lihat Objek database di metastore Apache Hive warisan.

Kapan menggunakan tabel eksternal

Databricks merekomendasikan penggunaan tabel eksternal untuk kasus penggunaan berikut:

  • Anda perlu mendaftarkan tabel yang didukung oleh data yang ada yang tidak kompatibel dengan tabel terkelola Unity Catalog.
  • Anda juga memerlukan akses langsung ke data dari klien non-Databricks yang tidak mendukung pola akses eksternal lainnya. Hak istimewa Unity Catalog tidak diberlakukan saat pengguna mengakses file data dari sistem eksternal. Lihat Mengakses data Databricks dengan menggunakan sistem eksternal.

Dalam kebanyakan kasus, Databricks merekomendasikan penggunaan tabel terkelola Unity Catalog untuk memanfaatkan pengoptimalan tabel otomatis, performa kueri yang lebih cepat, dan mengurangi biaya. Untuk memigrasikan tabel eksternal ke tabel terkelola, lihat Mengonversi tabel eksternal ke tabel Katalog Unity terkelola.

Penting

Jika Anda memperbarui metadata tabel eksternal menggunakan klien non-Databricks atau menggunakan akses berbasis jalur dari dalam Databricks, metadata tersebut tidak secara otomatis menyinkronkan status dengan Unity Catalog. Databricks merekomendasikan untuk menghindari pembaruan metadata tersebut, tetapi jika Anda melakukannya, Anda harus menjalankan MSCK REPAIR TABLE <table-name> SYNC METADATA untuk memperbarui skema di Katalog Unity. Lihat REPAIR TABLE.

Format file untuk tabel eksternal

Tabel eksternal dapat menggunakan format file berikut:

  • DELTA
  • CSV
  • JSON
  • AVRO
  • PARKET
  • Ork
  • TEKS

Membuat tabel eksternal

Anda dapat membuat tabel eksternal menggunakan perintah SQL atau operasi penulisan DataFrame.

Sebelum Anda memulai

Sebelum membuat tabel eksternal, Anda harus terlebih dahulu mengonfigurasi lokasi eksternal yang memberikan akses ke penyimpanan cloud Anda.

Untuk informasi selengkapnya tentang mengonfigurasi lokasi eksternal, lihat Membuat lokasi eksternal untuk menyambungkan penyimpanan cloud ke Azure Databricks.

Untuk membuat tabel eksternal, Anda harus memenuhi persyaratan izin berikut:

  • Hak istimewa CREATE EXTERNAL TABLE pada lokasi eksternal yang memberikan akses ke LOCATION yang diakses oleh tabel eksternal.
  • Izin USE CATALOG pada katalog induk tabel.
  • Izin USE SCHEMA pada skema induk tabel.
  • Izin CREATE TABLE pada skema induk tabel.

Nota

Saat lokasi eksternal S3 dikaitkan dengan beberapa metastores, hindari memberikan akses tulis ke tabel yang menggunakan lokasi S3 tersebut karena menulis dari metastores yang berbeda ke tabel eksternal yang sama dapat menyebabkan masalah konsistensi. Namun, membaca dari lokasi eksternal S3 yang sama di beberapa metastores aman.

Contoh perintah SQL

Gunakan salah satu contoh perintah berikut di buku catatan atau editor kueri SQL untuk membuat tabel eksternal.

Dalam contoh berikut ini, ganti nilai placeholder:

  • <catalog>: Nama katalog yang akan berisi tabel.
  • <schema>: Nama skema yang akan berisi tabel.
  • <table-name>: Nama untuk tabel.
  • <column-specification>: Nama dan jenis data untuk setiap kolom.
  • <bucket-path>: Jalur ke wadah penyimpanan cloud tempat tabel akan dibuat.
  • <table-directory>: Direktori tempat tabel akan dibuat. Gunakan direktori unik untuk setiap tabel.

ADLS

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';

S3

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 's3://<bucket-path>/<table-directory>';

Untuk informasi selengkapnya tentang parameter pembuatan tabel, lihat CREATE TABLE.

Operasi penulisan DataFrame

Anda juga dapat membuat tabel eksternal dari hasil kueri atau operasi penulisan DataFrame. LOCATION Gunakan klausa untuk menentukan jalur penyimpanan eksternal saat membuat tabel dengan DataFrames.

Opsi sintaks SQL berikut berfungsi dengan operasi DataFrame:

Menghapus tabel eksternal

Untuk menghapus tabel, Anda harus menjadi pemiliknya atau memiliki hak istimewa MANAGE pada tabel. Untuk menghilangkan tabel eksternal, jalankan perintah SQL berikut:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Katalog Unity tidak menghapus data yang mendasar di penyimpanan cloud saat Anda menghilangkan tabel eksternal. Anda harus langsung menghapus file data yang mendasar jika Anda perlu menghapus data yang terkait dengan tabel.

Contoh buku catatan: Membuat tabel eksternal

Anda bisa menggunakan contoh buku catatan berikut untuk membuat katalog, skema, dan tabel eksternal, dan untuk mengelola izin pada buku catatan tersebut.

Membuat dan mengelola tabel eksternal dalam Notebook Katalog Unity

Dapatkan buku catatan