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.
Dokumentasi Azure Databricks berfokus pada penggunaan objek data dengan Unity Catalog, tetapi sebagian besar petunjuknya juga berlaku untuk penggunaan objek yang terdaftar di metastore Hive lama.
Artikel ini membahas cara bekerja dengan objek basis data yang terdaftar di metastore Hive versi lama. Secara khusus, artikel ini menjelaskan perbedaan antara bekerja dengan objek metastore Hive dan bekerja dengan objek Unity Catalog. Ini juga menjelaskan perilaku lain yang mungkin tidak terduga.
Databricks merekomendasikan agar Anda memigrasikan semua data dari Hive metastore lama ke Unity Catalog. Lihat Memutakhirkan tabel dan tampilan Hive ke Katalog Unity.
Bagaimana cara kerja tata kelola data Hive metastore?
Meskipun ruang kerja Azure Databricks terus menyertakan metastore Apache Hive bawaan, tata kelola data menggunakan metastore Apache Hive tidak digunakan lagi. Databricks merekomendasikan agar Anda menggunakan Unity Catalog untuk semua tata kelola data. Lihat Memanfaatkan metastore Apache Hive lama bersama Unity Catalog.
Mengaktifkan ruang kerja untuk Unity Catalog tidak mengurangi kemampuan Anda untuk bekerja dengan data yang sudah terdaftar di metastore Apache Hive. Semua objek data yang terdaftar di metastore Hive lama ditampilkan di antarmuka Unity Catalog di katalog hive_metastore. Ruang kerja dengan metastore Hive hibrida dan Unity Catalog dapat menjadi model yang berguna untuk melakukan transisi ruang kerja yang telah lama menggunakan metastore Hive. Namun, keunggulan Unity Catalog dalam tata kelola data dan performa sangat besar, dan Anda harus sepenuhnya memigrasikan ruang kerja Anda sesegera mungkin.
Metastore Apache Hive menggunakan kontrol akses tabel (ACL tabel) untuk mengelola akses ke objek database. Beberapa dukungan masih ada untuk kontrol akses tabel saat Anda memakai pengolahan dalam mode akses standar. Lihat Kontrol akses tabel metastore Apache Hive (warisan).
Penerusan kredensial adalah pola usang untuk tata kelola data pada objek basis data dalam metastore Hive. Artikel ini tidak membahas penerusan kredensial. Lihat Penerusan kredensial (lama).
Catatan
Jika artikel ini mengacu pada kontrol akses data di metastore Hive, yang dimaksud adalah kontrol akses tabel lama.
Apa itu katalog hive_metastore?
Di ruang kerja yang mengaktifkan Unity Catalog, semua skema dalam metastore Hive muncul di bawah katalog hive_metastore dalam namespace tiga tingkat Unity Catalog. Metastore Hive sebenarnya tidak menggunakan katalog, dan konstruksi ini menyediakan titik akses ke tabel dalam metastore Hive lama bagi pengguna Unity Catalog. Gunakan sintaks berikut untuk membuat kueri pada tabel di metastore Hive lama:
SELECT * FROM hive_metastore.schema_name.table_name
Catatan
Anda dapat mengatur katalog hive_metastore secara opsional sebagai katalog default ruang kerja di ruang kerja yang mendukung Unity Catalog. Lihat Mengelola katalog bawaan.
Skema di metastore Hive
Dalam metastore Hive lama, skema adalah tingkat tertinggi pada hierarki objek data.
Ada beberapa perbedaan penting antara Unity Catalog dan Hive metastore, termasuk berikut ini:
- Anda tidak dapat membuat skema di metastore Apache Hive menggunakan Catalog Explorer. Anda dapat melihat dan mengedit izin untuk skema.
- Skema yang dibuat di metastore Hive hanya dapat menggunakan karakter ASCII alfanumerik dan garis bawah dalam nama skema tersebut.
- Metastore Apache Hive memungkinkan Anda mendeklarasikan
LOCATIONuntuk skema selama pembuatan. Fungsi ini mirip dengan lokasi penyimpanan terkelola Unity Catalog, dengan perbedaan perilaku berikut:- Jika Anda tidak menyediakan lokasi, lokasi
/user/hive/warehouse/<schema-name>default akan digunakan. Lokasi ini berada di akar DBFS, yang tidak disarankan untuk menyimpan data produksi apa pun. - Jalur yang diberikan dapat berupa lokasi penyimpanan cloud apa pun yang tersedia bagi pengguna yang membuat skema, termasuk URI cloud, root DBFS, dan mount DBFS.
- Akses ke lokasi tidak dikelola oleh Hive metastore.
- Menghapus skema di metastore Apache Hive menyebabkan semua file di lokasi skema tersebut dihapus secara rekursif, terlepas dari jenis tabel (terkelola atau eksternal).
- Jika Anda tidak menyediakan lokasi, lokasi
Untuk menghindari kehilangan data yang tidak disengaja, Databricks merekomendasikan hal berikut saat Anda bekerja dengan lokasi skema Hive metastore:
- Jangan tetapkan lokasi skema yang sudah berisi data.
- Jangan membuat tabel eksternal di lokasi skema.
- Jangan berbagi lokasi di antara beberapa skema.
- Jangan tetapkan lokasi skema yang tumpang tindih dengan lokasi skema lain. Dengan kata lain, jangan gunakan path yang merupakan turunan dari lokasi skema lain.
- Jangan tetapkan lokasi skema yang tumpang tindih dengan lokasi tabel eksternal.
Tabel terkelola di Hive metastore
Tabel terkelola di metastore Hive tidak memiliki manfaat performa apa pun yang ada pada tabel terkelola di Unity Catalog. Seperti tabel terkelola Unity Catalog, tabel terkelola metastore Apache Hive menggunakan Delta Lake secara default. Namun, di metastore Apache Hive, tidak seperti Unity Catalog, Anda juga dapat membuat tabel terkelola menggunakan sebagian besar format data lain yang didukung oleh Azure Databricks.
Tabel terkelola di metastore Hive selalu dibuat di lokasi penyimpanan skema induk. Komputasi yang Anda gunakan untuk mengkueri tabel terkelola harus memiliki akses ke lokasi penyimpanan.
Metastore Apache Hive tidak mengelola tata letak data tabel terkelola seperti yang dilakukan Katalog Unity. Saat Anda menghapus tabel terkelola di metastore Apache Hive, semua file data yang mendasar akan segera dihapus. Di Unity Catalog, di sisi lain, Anda dapat UNDROP mengelola tabel selama 7 hari, dan data dihapus secara permanen dalam waktu 30 hari.
Anda dapat menggunakan akses berbasis jalur untuk membaca atau menulis data dalam tabel terkelola di metastore Hive, sedangkan di Unity Catalog Anda tidak bisa dan memang tidak perlu melakukannya.
Tabel eksternal di Hive metastore
Sebagian besar tabel yang dibuat di Azure Databricks sebelum pengenalan Unity Catalog dikonfigurasi sebagai tabel eksternal di metastore Apache Hive. Rekomendasi lama yang biasanya menganjurkan penggunaan tabel eksternal berfokus pada beberapa aspek utama:
- Anda dapat mendaftarkan tabel eksternal di atas data yang ada di penyimpanan objek cloud.
- Anda dapat langsung mengakses file data dalam tabel eksternal dari sistem eksternal untuk dibaca atau ditulis.
- File data tidak dihapus jika tabel dihilangkan secara tidak sengaja.
- Karena tabel eksternal memerlukan
LOCATION, kemungkinan data produksi untuk secara tidak sengaja berakhir di root DBFS menjadi lebih kecil.
Azure Databricks sekarang merekomendasikan tabel terkelola Unity Catalog untuk sebagian besar penyimpanan data tabular. Lihat tabel terkelola Unity Catalog untuk Delta Lake dan Apache Iceberg.
Tampilan di metastore Hive
Anda dapat mendeklarasikan tampilan di metastore Apache Hive yang didukung oleh sumber data apa pun yang didukung oleh Azure Databricks. Di Unity Catalog, Anda hanya dapat mendeklarasikan tampilan terhadap tabel dan tampilan Katalog Unity, termasuk tabel asing, tampilan materialisasi, dan tabel OpenSharing.
Karena kemampuan untuk mendeklarasikan tampilan terhadap sumber data non-tabular, tampilan di metastore Apache Hive dapat memberikan akses tak terduga atau tidak diinginkan ke data dalam kombinasi dengan konfigurasi akses lain di lingkungan pengguna.
Misalnya, pertimbangkan hal berikut:
- Tabel
my_tabledidefinisikan menggunakan jalur/mnt/my_tablepemasangan DBFS .- Kredensial pemasangan DBFS disimpan di ruang kerja, sehingga semua pengguna memiliki akses ke jalur ini secara default.
- ACL tabel digunakan untuk membatasi akses ke
my_tablegrup pengguna.- ACL tabel warisan hanya berlaku pada komputasi yang disambungkan dengan mode akses standar atau gudang SQL.
- Tampilan
my_viewdidefinisikan langsung terhadap URI cloud yang mendukung file'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'data yang sama.- Kredensial URI mengandalkan kebijakan akses yang ditentukan dalam sesi Spark atau konfigurasi komputasi.
Tampilan my_view memiliki properti berikut:
- Ini tidak menggunakan kredensial pemasangan DBFS yang digunakan untuk memasang penyimpanan objek cloud ke
/mnt/my_table. - Ini tidak menghormati ACL tabel yang ditetapkan pada
my_table, terlepas dari konfigurasi komputasi. - Hal ini memerlukan kebijakan akses data yang dikonfigurasi untuk komputasi yang memberikan akses baca ke
'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'.
Catatan
Ini hanyalah salah satu contoh perilaku tak terduga yang mungkin Anda temui, dan bukan daftar lengkap semua potensi masalah yang ditimbulkan oleh view dalam metastore Hive lama. Databricks merekomendasikan penggunaan Unity Catalog untuk semua definisi tampilan.
Tabel Hive lama dan dukungan HiveQL
Azure Databricks mencakup beberapa dukungan lama untuk tabel Hive dan fungsionalitas HiveQL. Fungsionalitas ini adalah sisa dari versi awal Azure Databricks dan ekosistem alat Apache Hadoop. Databricks tidak merekomendasikan penggunaan tabel Apache Hive atau fungsionalitas Apache Hive lainnya, karena fungsionalitas ini tidak dioptimalkan dan tidak memiliki dukungan dalam beberapa konfigurasi komputasi.
Artikel berikut menjelaskan fungsionalitas lama Hive: