Membuat tabel di Katalog Unity
Artikel ini memperkenalkan konsep tabel terkelola dan eksternal di Unity Catalog dan menjelaskan cara membuat tabel di Unity Catalog.
Catatan
Saat Anda membuat tabel, pastikan untuk mereferensikan katalog yang diatur oleh Katalog Unity atau atur katalog default ke katalog yang diatur oleh Katalog Unity. Lihat Mengelola katalog default.
Katalog hive_metastore
muncul di Catalog Explorer tetapi tidak dianggap diatur oleh Katalog Unity. Ini dikelola oleh metastore Apache Hive ruang kerja Azure Databricks Anda. Semua katalog lain yang tercantum diatur oleh Katalog Unity.
Anda dapat menggunakan antarmuka peningkatan tabel Katalog Unity untuk meningkatkan tabel yang ada yang terdaftar di metastore Apache Hive ke Katalog Unity. Lihat Meningkatkan tabel dan tampilan Apache Hive ke Katalog Unity.
Tabel terkelola
Tabel terkelola adalah cara default untuk membuat tabel di Katalog Unity. Katalog Unity mengelola siklus hidup dan tata letak file untuk tabel ini. Anda tidak boleh menggunakan alat di luar Azure Databricks untuk memanipulasi file dalam tabel ini secara langsung.
Tabel terkelola disimpan dalam penyimpanan terkelola, baik di tingkat metastore, katalog, atau skema, tergantung pada bagaimana skema dan katalog dikonfigurasi. Lihat Menentukan lokasi penyimpanan terkelola di Katalog Unity.
Tabel terkelola selalu menggunakan format tabel Delta .
Saat tabel terkelola dihapus, data yang mendasarinya akan dihapus dari penyewa cloud Anda dalam 30 hari.
Tabel eksternal
Tabel eksternal adalah tabel yang datanya disimpan di luar lokasi penyimpanan terkelola yang ditentukan untuk metastore, katalog, atau skema. Gunakan tabel eksternal hanya saat Anda memerlukan akses langsung ke data di luar kluster Azure Databricks atau gudang Databricks SQL.
Saat Anda menjalankan DROP TABLE
pada tabel eksternal, Katalog Unity tidak menghapus data yang mendasarinya. Untuk menjatuhkan tabel, Anda harus menjadi pemiliknya. Anda dapat mengelola hak istimewa pada tabel eksternal dan menggunakannya dalam kueri dengan cara yang sama seperti tabel terkelola. Untuk membuat tabel eksternal dengan SQL, tentukan jalur LOCATION
dalam pernyataan CREATE TABLE
. Tabel eksternal dapat menggunakan format file berikut:
- DELTA
- CSV
- JSON
- AVRO
- PARKET
- ORC
- TEXT
Untuk mengelola akses ke penyimpanan cloud yang mendasari untuk tabel eksternal, Anda harus menyiapkan kredensial penyimpanan dan lokasi eksternal.
Untuk mempelajari selengkapnya, lihat Membuat tabel eksternal.
Persyaratan
Anda harus memiliki CREATE TABLE
hak istimewa pada skema tempat Anda ingin membuat tabel, serta USE SCHEMA
hak istimewa pada skema dan USE CATALOG
hak istimewa pada katalog induk.
Jika Anda membuat tabel eksternal, lihat Membuat tabel eksternal untuk persyaratan tambahan.
Membuat tabel terkelola
Untuk membuat tabel terkelola, jalankan perintah SQL berikut. Anda juga dapat menggunakan contoh notebook untuk membuat tabel. Item dalam tanda kurung bersifat opsional. Ganti nilai tempat penampung:
<catalog-name>
: Nama katalog yang akan berisi tabel..Ini tidak boleh menjadi
hive_metastore
katalog yang dibuat secara otomatis untuk metastore Apache Hive yang terkait dengan ruang kerja Azure Databricks Anda. Anda dapat menghilangkan nama katalog jika Anda membuat tabel di katalog default ruang kerja.<schema-name>
: Nama skema yang akan berisi tabel..<table-name>
: Nama tabel.<column-specification>
: Nama dan jenis data untuk setiap kolom.
SQL
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
);
Python
spark.sql("CREATE TABLE <catalog-name>.<schema-name>.<table-name> "
"("
" <column-specification>"
")")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog-name>.<schema-name>.<table-name> ",
"(",
" <column-specification>",
")",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog-name>.<schema-name>.<table-name> " +
"(" +
" <column-specification>" +
")")
Anda juga dapat membuat tabel terkelola dengan menggunakan penyedia Databricks Terraform dan databricks_table. Anda dapat mengambil daftar nama lengkap tabel dengan menggunakan databricks_tables.
Misalnya, untuk membuat tabel main.default.department
dan menyisipkan lima baris ke dalamnya:
SQL
CREATE TABLE main.default.department
(
deptcode INT,
deptname STRING,
location STRING
);
INSERT INTO main.default.department VALUES
(10, 'FINANCE', 'EDINBURGH'),
(20, 'SOFTWARE', 'PADDINGTON'),
(30, 'SALES', 'MAIDSTONE'),
(40, 'MARKETING', 'DARLINGTON'),
(50, 'ADMIN', 'BIRMINGHAM');
Python
spark.sql("CREATE TABLE main.default.department "
"("
" deptcode INT,"
" deptname STRING,"
" location STRING"
")"
"INSERT INTO main.default.department VALUES "
" (10, 'FINANCE', 'EDINBURGH'),"
" (20, 'SOFTWARE', 'PADDINGTON'),"
" (30, 'SALES', 'MAIDSTONE'),"
" (40, 'MARKETING', 'DARLINGTON'),"
" (50, 'ADMIN', 'BIRMINGHAM')")
R
library(SparkR)
sql(paste("CREATE TABLE main.default.department ",
"(",
" deptcode INT,",
" deptname STRING,",
" location STRING",
")",
"INSERT INTO main.default.department VALUES ",
" (10, 'FINANCE', 'EDINBURGH'),",
" (20, 'SOFTWARE', 'PADDINGTON'),",
" (30, 'SALES', 'MAIDSTONE'),",
" (40, 'MARKETING', 'DARLINGTON'),",
" (50, 'ADMIN', 'BIRMINGHAM')",
sep = ""))
Scala
spark.sql("CREATE TABLE main.default.department " +
"(" +
" deptcode INT," +
" deptname STRING," +
" location STRING" +
")" +
"INSERT INTO main.default.department VALUES " +
" (10, 'FINANCE', 'EDINBURGH')," +
" (20, 'SOFTWARE', 'PADDINGTON')," +
" (30, 'SALES', 'MAIDSTONE')," +
" (40, 'MARKETING', 'DARLINGTON')," +
" (50, 'ADMIN', 'BIRMINGHAM')")
Contoh buku catatan: Membuat tabel terkelola
Anda dapat menggunakan notebook contoh berikut untuk membuat katalog, skema, dan tabel terkelola, serta mengelola izinnya.
Membuat dan mengelola tabel di Katalog Unity menggunakan buku catatan Python
Membuat dan mengelola tabel di Katalog Unity menggunakan buku catatan SQL
Menghapus tabel terkelola
Anda harus menjadi pemilik tabel untuk menjatuhkan tabel. Untuk menghilangkan tabel terkelola, jalankan perintah SQL berikut:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Saat tabel terkelola dihapus, data yang mendasarinya akan dihapus dari penyewa cloud Anda dalam 30 hari.
Membuat tabel eksternal
Data dalam tabel eksternal disimpan dalam jalur di penyewa cloud Anda. Untuk bekerja dengan tabel eksternal, Unity Catalog memperkenalkan dua objek untuk mengakses dan bekerja dengan penyimpanan cloud eksternal:
- Kredensial penyimpanan berisi metode autentikasi untuk mengakses lokasi penyimpanan cloud. Kredensial penyimpanan tidak berisi pemetaan ke jalur yang diberikan aksesnya. Kredensial penyimpanan dikontrol oleh akses untuk menentukan pengguna mana yang dapat menggunakan kredensial.
- Lokasi eksternal memetakan kredensial penyimpanan dengan jalur penyimpanan cloud yang diberikan aksesnya. Lokasi eksternal hanya memberikan akses ke jalur penyimpanan cloud dan isinya. Lokasi eksternal dikontrol oleh akses untuk menentukan pengguna mana yang dapat menggunakannya. Lokasi eksternal digunakan secara otomatis saat perintah SQL Anda berisi
LOCATION
klausa.
Persyaratan
Untuk membuat tabel eksternal, Anda harus memiliki:
- Hak
CREATE EXTERNAL TABLE
istimewa pada lokasi eksternal yang memberikan akses keLOCATION
tabel eksternal yang diakses. - Izin
USE SCHEMA
pada skema induk tabel. - Izin
USE CATALOG
pada katalog induk tabel. - Izin
CREATE TABLE
pada skema induk tabel.
Lokasi eksternal dan kredensial penyimpanan disimpan di tingkat metastore, bukan di katalog. Untuk membuat kredensial penyimpanan, Anda harus menjadi admin akun atau memiliki CREATE STORAGE CREDENTIAL
hak istimewa. Untuk membuat lokasi eksternal, Anda harus menjadi admin metastore atau memiliki CREATE EXTERNAL LOCATION
hak istimewa. Lihat Koneksi ke penyimpanan objek cloud menggunakan Unity Catalog.
Buat tabel
Gunakan salah satu contoh perintah berikut di buku catatan atau editor kueri SQL untuk membuat tabel eksternal.
Anda juga bisa menggunakan contoh buku catatan untuk membuat kredensial penyimpanan, lokasi eksternal, dan tabel eksternal, dan juga mengelola izin untuk mereka.
Dalam contoh berikut, ubah nilai tempat penampung:
<catalog>
: Nama katalog yang akan menampung tabel.Ini tidak boleh menjadi
hive_metastore
katalog yang dibuat secara otomatis untuk metastore Apache Hive yang terkait dengan ruang kerja Azure Databricks Anda. Anda dapat menghilangkan nama katalog jika Anda membuat tabel di katalog default ruang kerja.<schema>
: Nama skema yang akan menampung tabel.<table-name>
: Nama 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.
Penting
Setelah tabel dibuat di jalur, pengguna tidak dapat lagi langsung mengakses file di jalur tersebut dari Azure Databricks bahkan jika mereka telah diberikan hak istimewa di lokasi eksternal atau kredensial penyimpanan untuk melakukannya. Hal ini untuk memastikan bahwa pengguna tidak dapat menghindari kontrol akses yang diterapkan ke tabel dengan membaca file dari penyewa cloud Anda secara langsung.
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Python
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> "
"("
" <column-specification>"
") "
"LOCATION 'abfss://<bucket-path>/<table-directory>'")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog>.<schema>.<table-name> ",
"(",
" <column-specification>",
") ",
"LOCATION 'abfss://<bucket-path>/<table-directory>'",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> " +
"(" +
" <column-specification>" +
") " +
"LOCATION 'abfss://<bucket-path>/<table-directory>'")
Katalog Unity memeriksa apakah Anda memiliki izin berikut:
CREATE EXTERNAL TABLE
di lokasi eksternal yang mereferensikan jalur penyimpanan cloud yang Anda tentukan.CREATE TABLE
pada skema induk.USE SCHEMA
pada skema induk.USE CATALOG
pada katalog induk.
Jika Anda melakukannya, tabel eksternal dibuat. Jika tidak, terjadi kesalahan dan tabel eksternal tidak akan dibuat.
Catatan
Anda dapat memigrasikan tabel eksternal yang ada di metastore Hive ke Katalog Unity tanpa menduplikasi datanya. Lihat Meningkatkan satu tabel Apache Hive ke tabel eksternal Unity Catalog menggunakan wizard pemutakhiran.
Anda juga dapat membuat tabel eksternal dengan menggunakan penyedia Databricks Terraform dan databricks_table. Anda dapat mengambil daftar nama lengkap tabel dengan menggunakan databricks_tables.
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 di buku catatan Katalog Unity
Membuat tabel dari file yang disimpan di penyewa cloud Anda
Anda dapat mengisi tabel terkelola atau eksternal dengan catatan dari file yang disimpan di penyewa cloud Anda. Unity Catalog membaca file di lokasi tersebut dan memasukkan isinya ke dalam tabel. Di Katalog Unity, hal ini disebut akses berbasis jalur.
Anda dapat mengikuti contoh di bagian ini atau menggunakan UI tambahkan data.
Menjelajahi isi file
Untuk menjelajahi data yang disimpan di lokasi eksternal sebelum membuat tabel dari data tersebut, Anda bisa menggunakan Catalog Explorer atau perintah berikut.
Izin yang diperlukan: Anda harus memiliki READ FILES
izin di lokasi eksternal yang terkait dengan jalur penyimpanan cloud untuk mengembalikan daftar file data di lokasi tersebut.
Sql
Cantumkan file di jalur penyimpanan cloud:
LIST 'abfss://<path-to-files>';
Buat kueri data dalam file di jalur tertentu:
SELECT * FROM <format>.`abfss://<path-to-files>`;
Python
Cantumkan file di jalur penyimpanan cloud:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
Buat kueri data dalam file di jalur tertentu:
display(spark.read.load("abfss://<path-to-files>"))
R
Cantumkan file di jalur penyimpanan cloud:
library(SparkR) display(sql("LIST 'abfss://<path-to-files>'"))
Buat kueri data dalam file di jalur tertentu:
library(SparkR) display(loadDF("abfss://<path-to-files>"))
Scala
Cantumkan file di jalur penyimpanan cloud:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
Buat kueri data dalam file di jalur tertentu:
display(spark.read.load("abfss://<path-to-files>"))
Membuat tabel dari daftar
Ikuti contoh di bagian ini untuk membuat tabel baru dan mengisinya dengan file data di penyewa cloud Anda.
Catatan
Anda dapat memigrasikan tabel eksternal yang ada di metastore Hive ke Katalog Unity tanpa menduplikasi datanya. Lihat Meningkatkan satu tabel Apache Hive ke tabel eksternal Unity Catalog menggunakan wizard pemutakhiran.
Penting
- Saat Anda membuat tabel menggunakan metode ini, jalur penyimpanan hanya dibaca sekali, untuk mencegah duplikasi catatan. Jika Anda ingin membaca ulang isi direktori, Anda harus menghapus dan membuat ulang tabel. Untuk tabel yang sudah ada, Anda dapat menyisipkan catatan dari jalur penyimpanan.
- Jalur bucket tempat Anda membuat tabel tidak dapat digunakan juga untuk membaca atau menulis file data.
- Hanya file di direktori yang tepat yang dibaca; bacaan tidak rekursif.
- Anda harus memiliki izin berikut:
USE CATALOG
pada katalog induk danUSE SCHEMA
pada skema.CREATE TABLE
pada skema induk.READ FILES
di lokasi eksternal yang terkait dengan jalur bucket tempat file berada, atau langsung pada kredensial penyimpanan jika Anda tidak menggunakan lokasi eksternal.- Jika Anda membuat tabel eksternal, Anda perlu
CREATE EXTERNAL TABLE
di jalur bucket tempat tabel akan dibuat.
Untuk membuat tabel terkelola baru dan mengisinya dengan data di penyimpanan cloud Anda, gunakan contoh berikut.
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
SELECT * from <format>.`abfss://<path-to-files>`;
Python
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> "
"( "
" <column-specification> "
") "
"SELECT * from <format>.`abfss://<path-to-files>`")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog>.<schema>.<table-name> ",
"( ",
" <column-specification> ",
") ",
"SELECT * from <format>.`abfss://<path-to-files>`",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> " +
"( " +
" <column-specification> " +
") " +
"SELECT * from <format>.`abfss://<path-to-files>`")
Untuk membuat tabel eksternal dan mengisinya dengan data di penyimpanan cloud Anda, tambahkan LOCATION
klausa:
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
USING <format>
LOCATION 'abfss://<table-location>'
SELECT * from <format>.`abfss://<path-to-files>`;
Python
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> "
"( "
" <column-specification> "
") "
"USING <format> "
"LOCATION 'abfss://<table-location>' "
"SELECT * from <format>.`abfss://<path-to-files>`")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog>.<schema>.<table-name> ",
"( ",
" <column-specification> ",
") ",
"USING <format> ",
"LOCATION 'abfss://<table-location>' ",
"SELECT * from <format>.`abfss://<path-to-files>`",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> " +
"( " +
" <column-specification> " +
") " +
"USING <format> " +
"LOCATION 'abfss://<table-location>' " +
"SELECT * from <format>.`abfss://<path-to-files>`")
Menyisipkan catatan dari jalur ke dalam tabel yang sudah ada
Untuk menyisipkan catatan dari jalur bucket ke dalam tabel yang sudah ada, gunakan perintah COPY INTO
. Dalam contoh berikut, ubah nilai tempat penampung:
<catalog>
: Nama katalog induk tabel.<schema>
: Nama skema induk tabel.<path-to-files>
: Jalur bucket yang berisi file data.<format>
: Format file, misalnyadelta
.<table-location>
: Jalur bucket tempat tabel akan dibuat.
Penting
- Saat Anda menyisipkan catatan ke dalam tabel menggunakan metode ini, jalur bucket yang Anda berikan hanya dibaca sekali, untuk mencegah duplikasi catatan.
- Jalur bucket tempat Anda membuat tabel tidak dapat digunakan juga untuk membaca atau menulis file data.
- Hanya file di direktori yang tepat yang dibaca; bacaan tidak rekursif.
- Anda harus memiliki izin berikut:
USE CATALOG
pada katalog induk danUSE SCHEMA
pada skema.MODIFY
di tabel.READ FILES
di lokasi eksternal yang terkait dengan jalur bucket tempat file berada, atau langsung pada kredensial penyimpanan jika Anda tidak menggunakan lokasi eksternal.- Untuk menyisipkan catatan ke dalam tabel eksternal, Anda perlu
CREATE EXTERNAL TABLE
di jalur bucket tempat tabel berada.
Untuk menyisipkan catatan dari file dalam jalur bucket ke dalam tabel terkelola, menggunakan lokasi eksternal untuk membaca dari jalur bucket:
SQL
COPY INTO <catalog>.<schema>.<table>
FROM (
SELECT *
FROM 'abfss://<path-to-files>'
)
FILEFORMAT = <format>;
Python
spark.sql("COPY INTO <catalog>.<schema>.<table> "
"FROM ( "
" SELECT * "
" FROM 'abfss://<path-to-files>' "
") "
"FILEFORMAT = <format>")
R
library(SparkR)
sql(paste("COPY INTO <catalog>.<schema>.<table> ",
"FROM ( ",
" SELECT * ",
" FROM 'abfss://<path-to-files>' ",
") ",
"FILEFORMAT = <format>",
sep = ""))
Scala
spark.sql("COPY INTO <catalog>.<schema>.<table> " +
"FROM ( " +
" SELECT * " +
" FROM 'abfss://<path-to-files>' " +
") " +
"FILEFORMAT = <format>")
Untuk menyisipkan ke dalam tabel eksternal, tambahkan klausa LOCATION
:
SQL
COPY INTO <catalog>.<schema>.<table>
LOCATION 'abfss://<table-location>'
FROM (
SELECT *
FROM 'abfss://<path-to-files>'
)
FILEFORMAT = <format>;
Python
spark.sql("COPY INTO <catalog>.<schema>.<table> "
"LOCATION 'abfss://<table-location>' "
"FROM ( "
" SELECT * "
" FROM 'abfss://<path-to-files>' "
") "
"FILEFORMAT = <format>")
R
library(SparkR)
sql(paste("COPY INTO <catalog>.<schema>.<table> ",
"LOCATION 'abfss://<table-location>' ",
"FROM ( ",
" SELECT * ",
" FROM 'abfss://<path-to-files>' ",
") ",
"FILEFORMAT = <format>",
sep = ""))
Scala
spark.sql("COPY INTO <catalog>.<schema>.<table> " +
"LOCATION 'abfss://<table-location>' " +
"FROM ( " +
" SELECT * " +
" FROM 'abfss://<path-to-files>' " +
") " +
"FILEFORMAT = <format>")
Menambahkan komentar ke tabel
Sebagai pemilik tabel atau pengguna dengan MODIFY
hak istimewa pada tabel, Anda bisa menambahkan komentar ke tabel dan kolomnya. Anda dapat menambahkan komentar menggunakan fungsionalitas berikut:
- Perintah COMMENT ON . Opsi ini tidak mendukung komentar kolom.
COMMENT
Opsi saat Anda menggunakan perintah CREATE TABLE dan ALTER TABLE. Opsi ini mendukung komentar kolom.- Bidang komentar "manual" di Catalog Explorer. Opsi ini mendukung komentar kolom. Lihat Data dokumen di Catalog Explorer menggunakan komentar markdown.
- Komentar yang dihasilkan AI (juga dikenal sebagai dokumentasi yang dihasilkan AI) di Catalog Explorer. Anda dapat melihat komentar yang disarankan oleh model bahasa besar (LLM) yang memperhitungkan metadata tabel, seperti skema tabel dan nama kolom, dan mengedit atau menerima komentar apa adanya untuk menambahkannya. Lihat Menambahkan komentar yang dihasilkan AI ke tabel.
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk