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 dan USE 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 memiliki USE CATALOG hak istimewa pada katalog induknya untuk mengakses skema dan USE SCHEMA hak istimewa untuk mengakses objek dalam skema. Sementara itu, dengan kontrol akses tabel tingkat ruang kerja, dengan memberikan USAGE pada katalog akar memberikan secara otomatis USAGE di semua basis data, tetapi USAGE 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 dengan USE SCHEMA skema induk tampilan dan USE 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 atau ANONYMOUS FUNCTION: Di Unity Catalog, tidak ada konsep ANY FILE atau ANONYMOUS 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 Koneksi 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.