Bekerja dengan Unity Catalog dan metastore Apache Hive warisan
Artikel ini menjelaskan cara menggunakan metastore Apache Hive per ruang kerja saat ruang kerja Azure Databricks Anda diaktifkan untuk Unity Catalog.
Jika ruang kerja Anda berada dalam layanan sebelum diaktifkan untuk Katalog Unity, kemungkinan memiliki metastore Apache Hive yang berisi data yang ingin terus Anda gunakan. Databricks merekomendasikan agar Anda memigrasikan tabel yang dikelola oleh metastore Apache Hive ke metastore Unity Catalog, tetapi jika Anda memilih untuk tidak melakukannya, artikel ini menjelaskan cara bekerja dengan data yang dikelola oleh kedua metastore.
Mengkueri metastore Apache Hive di Katalog Unity
Metastore Unity Catalog bersifat aditif, yang berarti dapat digunakan dengan metastore Apache Hive per ruang kerja di Azure Databricks. Metastore Hive muncul sebagai katalog tingkat atas yang disebut hive_metastore
di namespace tiga tingkat.
Misalnya, Anda dapat merujuk ke tabel yang dipanggil sales_raw
dalam skema sales
di metastore Hive warisan dengan menggunakan notasi berikut:
SQL
SELECT * from hive_metastore.sales.sales_raw;
Python
display(spark.table("hive_metastore.sales.sales_raw"))
R
library(SparkR)
display(tableToDF("hive_metastore.sales.sales_raw"))
Scala
display(spark.table("hive_metastore.sales.sales_raw"))
Anda juga dapat menentukan katalog dan skema dengan pernyataan USE
:
SQL
USE hive_metastore.sales;
SELECT * from sales_raw;
Python
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
R
library(SparkR)
sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))
Scala
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
Kontrol akses di Katalog Unity dan metastore Hive
Jika Anda mengonfigurasi kontrol akses tabel pada metastore Apache Hive, Databricks terus menerapkan kontrol akses tersebut hive_metastore
untuk data dalam katalog untuk kluster yang berjalan dalam mode akses bersama. Model akses Unity Catalog sedikit berbeda dari kontrol akses warisan, seperti tidak ada DENY
pernyataan. Apache Hive metastore adalah objek tingkat ruang kerja. Izin yang ditentukan dalam katalog hive_metastore
selalu merujuk ke pengguna dan grup lokal di ruang kerja tersebut. Lihat Perbedaan dengan kontrol akses tabel.
Perbedaan dengan kontrol akses tabel
Katalog Unity memiliki perbedaan utama berikut dari menggunakan kontrol akses tabel di metastore Hive warisan di setiap ruang kerja.
Model kontrol akses di Katalog Unity memiliki perbedaan berikut dengan kontrol akses tabel:
- Grup akun: Kebijakan kontrol akses di Katalog Unity diterapkan ke grup akun, sementara kebijakan kontrol akses untuk metastore Apache Hive diterapkan ke grup lokal ruang kerja. Lihat Perbedaan antara grup akun dan grup ruang kerja-lokal.
USE CATALOG
danUSE SCHEMA
izin diperlukan pada katalog dan skema untuk semua operasi pada objek di dalam katalog atau skema: Terlepas dari hak istimewa utama pada tabel, prinsipal juga harus memilikiUSE CATALOG
hak istimewa pada katalog induknya untuk mengakses skema danUSE SCHEMA
hak istimewa untuk mengakses objek dalam skema. Sementara itu, dengan kontrol akses tabel tingkat ruang kerja, dengan memberikanUSAGE
pada katalog akar memberikan secara otomatisUSAGE
di semua basis data, tetapiUSAGE
pada katalog akar tidak diperlukan.- Tampilan: Di Katalog Unity, pemilik tampilan tidak perlu menjadi pemilik tabel dan tampilan yang direferensikan tampilan tersebut.
SELECT
Memiliki hak istimewa cukup, bersama denganUSE SCHEMA
skema induk tampilan danUSE CATALOG
pada katalog induk. Dengan kontrol akses tabel tingkat-ruang kerja, pemilik tampilan harus menjadi pemilik semua tabel dan tampilan yang direferensikan. - Tidak ada dukungan untuk
ANY FILE
atauANONYMOUS FUNCTION
: Di Unity Catalog, tidak ada konsepANY FILE
atauANONYMOUS FUNCTION
yang dapat diamankan yang mungkin memungkinkan pengguna yang tidak memiliki hak istimewa untuk menjalankan kode istimewa. - Tidak ada
READ_METADATA
hak istimewa: Katalog Unity mengelola akses untuk melihat metadata dengan cara yang berbeda. Lihat Hak istimewa Unity Catalog dan objek yang dapat diamankan.
Gabungan antara Katalog Unity dan objek metastore Apache Hive
Dengan menggunakan notasi namespace tiga tingkat, Anda dapat menggabungkan data di metastore Katalog Unity dengan data di metastore Hive warisan.
Catatan
Bergabung dengan data di metastore Hive warisan hanya akan berfungsi di ruang kerja tempat data tersebut berada. Mencoba menjalankan gabungan seperti itu di ruang kerja lain akan mengakibatkan galat. Azure Databricks merekomendasikan agar Anda meningkatkan tabel dan tampilan warisan ke Katalog Unity.
Contoh berikut menggabungkan hasil dari tabel sales_current
di metastore Hive warisan dengan tabel sales_historical
di metastore Katalog Unity saat bidangnya order_id
setara.
SQL
SELECT * FROM hive_metastore.sales.sales_current
JOIN main.shared_sales.sales_historical
ON hive_metastore.sales.sales_current.order_id = main.shared_sales.sales_historical.order_id;
Python
dfCurrent = spark.table("hive_metastore.sales.sales_current")
dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
other = dfHistorical,
on = dfCurrent.order_id == dfHistorical.order_id
))
R
library(SparkR)
dfCurrent = tableToDF("hive_metastore.sales.sales_current")
dfHistorical = tableToDF("main.shared_sales.sales_historical")
display(join(
x = dfCurrent,
y = dfHistorical,
joinExpr = dfCurrent$order_id == dfHistorical$order_id))
Scala
val dfCurrent = spark.table("hive_metastore.sales.sales_current")
val dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
right = dfHistorical,
joinExprs = dfCurrent("order_id") === dfHistorical("order_id")
))
Katalog default
Katalog default dikonfigurasi untuk setiap ruang kerja yang diaktifkan untuk Katalog Unity.
Jika Anda menghilangkan nama katalog tingkat atas saat Anda melakukan operasi data, katalog default diasumsikan.
Katalog default yang awalnya dikonfigurasi untuk ruang kerja Anda bergantung pada bagaimana ruang kerja Anda diaktifkan untuk Katalog Unity:
- Jika ruang kerja Anda diaktifkan untuk Katalog Unity secara otomatis, katalog ruang kerja ditetapkan sebagai katalog default. Lihat Pengaktifan Otomatis Katalog Unity.
- Jika ruang kerja Anda diaktifkan untuk Katalog Unity secara manual,
hive_metastore
katalog ditetapkan sebagai katalog default.
Jika Anda beralih dari metastore Apache Hive ke Unity Catalog dalam ruang kerja yang ada, biasanya masuk akal untuk digunakan hive_metastore
sebagai katalog default untuk menghindari berdampak pada kode yang ada yang mereferensikan metastore apache Hive.
Untuk mempelajari cara mendapatkan dan mengalihkan katalog default, lihat Mengelola katalog default
Izin akses data yang dilingkup kluster
Saat Anda menggunakan metastore Apache Hive bersama Unity Catalog, kredensial akses data yang terkait dengan kluster digunakan untuk mengakses data metastore Apache Hive tetapi bukan data yang terdaftar di Unity Catalog.
Jika pengguna mengakses jalur yang berada di luar Katalog Unity (seperti jalur yang tidak terdaftar sebagai tabel atau lokasi eksternal) maka kredensial akses yang ditetapkan ke kluster akan digunakan.
Lihat Menyambungkan ke Azure Data Lake Storage Gen2 dan Blob Storage.
Mengupgrade tabel warisan ke Katalog Unity
Tabel di metastore Hive tidak mendapat manfaat dari serangkaian fitur keamanan dan tata kelola lengkap yang dimiliki Katalog Unity, seperti audit bawaan dan kontrol akses. Databricks merekomendasikan agar Anda meningkatkan tabel warisan dengan menambahkannya ke Katalog Unity.