Objek database di metastore Apache Hive warisan
Dokumentasi Azure Databricks berfokus pada bekerja dengan objek data menggunakan Katalog Unity, tetapi sebagian besar instruksi juga berlaku untuk bekerja dengan objek yang terdaftar di metastore Apache Hive warisan.
Artikel ini berfokus pada cara bekerja dengan objek database yang terdaftar di metastore Apache Hive warisan. Secara khusus, artikel ini memanggil tempat bekerja dengan objek metastore Apache Hive berbeda dari bekerja dengan objek Katalog Unity. Ini juga menjelaskan perilaku lain yang mungkin tidak terduga.
Databricks merekomendasikan agar Anda memigrasikan semua data dari metastore Apache Hive warisan ke Unity Catalog. Lihat Meningkatkan tabel dan tampilan Apache Hive ke Katalog Unity.
Bagaimana cara kerja tata kelola data metastore Apache Hive?
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 Bekerja dengan Unity Catalog dan metastore Apache Hive warisan.
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 Apache Hive warisan muncul di antarmuka Katalog Unity dalam hive_metastore
katalog. Metastore Hive hibrid dan ruang kerja Unity Catalog dapat menjadi model yang berguna untuk transisi ruang kerja metastore Apache Hive yang sudah lama ada. Namun, tata kelola data dan keunggulan performa Unity Catalog tinggi, dan Anda harus sepenuhnya transisi ruang kerja Anda sesegera mungkin.
Metastore Apache Hive menggunakan kontrol akses tabel (ACL tabel) untuk mengelola akses ke objek database. Beberapa dukungan tetap untuk kontrol akses tabel saat Anda menggunakan komputasi dalam mode akses bersama. Lihat Kontrol akses tabel metastore Apache Hive (warisan).
Passthrough kredensial adalah pola yang tidak digunakan lagi untuk tata kelola data pada objek database metastore Apache Hive. Artikel ini tidak membahas passthrough kredensial. Lihat Passthrough kredensial (warisan).
Catatan
Jika artikel ini mengacu pada kontrol akses data di metastore Apache Hive, artikel ini mengacu pada kontrol akses tabel warisan.
Apa katalognya hive_metastore
?
Di ruang kerja yang diaktifkan untuk Katalog Unity, semua skema di metastore Apache Hive muncul sebagai turunan hive_metastore
katalog di namespace layanan tiga tingkat Katalog Unity. Metastore Apache Hive sebenarnya tidak menggunakan katalog, dan konstruksi ini menyediakan titik masuk ke tabel di metastore Apache Hive warisan untuk pengguna Katalog Unity. Gunakan sintaks berikut untuk mengkueri tabel dalam metastore Apache Hive warisan:
SELECT * FROM hive_metastore.schema_name.table_name
Catatan
Anda dapat secara opsional mengatur hive_metastore
katalog sebagai default ruang kerja di ruang kerja yang diaktifkan Katalog Unity. Lihat Mengelola katalog default.
Skema di metastore Apache Hive
Dalam metastore Apache Hive warisan, skema adalah tingkat tertinggi dalam hierarki objek data.
Ada beberapa perbedaan penting antara Katalog Unity dan metastore Apache Hive, termasuk yang 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 dalam metastore Apache Hive hanya dapat menggunakan karakter dan garis bawah ASCII alfanumerik dalam namanya.
- Metastore Apache Hive memungkinkan Anda mendeklarasikan
LOCATION
untuk 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 disediakan dapat berupa lokasi penyimpanan cloud apa pun yang tersedia untuk pengguna yang membuat skema, termasuk URI cloud, akar DBFS, dan pemasangan DBFS.
- Akses ke lokasi tidak dikelola oleh metastore Apache Hive.
- 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 metastore Apache Hive:
- 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 jalur yang merupakan anak dari lokasi skema lain.
- Jangan tetapkan lokasi skema yang tumpang tindih dengan lokasi tabel eksternal.
Tabel terkelola di metastore Apache Hive
Tabel terkelola di metastore Apache Hive tidak memiliki manfaat performa tabel terkelola di Katalog Unity. 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 Apache Hive selalu dibuat di lokasi penyimpanan skema yang berisi. 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 metastore Apache Hive, sementara di Unity Catalog Anda tidak dapat dan tidak perlu.
Tabel eksternal di metastore Apache Hive
Sebagian besar tabel yang dibuat di Azure Databricks sebelum pengenalan Unity Catalog dikonfigurasi sebagai tabel eksternal di metastore Apache Hive. Rekomendasi warisan yang mendukung tabel eksternal biasanya 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
, data produksi cenderung tidak sengaja berakhir di akar DBFS.
Azure Databricks sekarang merekomendasikan tabel terkelola Unity Catalog untuk sebagian besar penyimpanan data tabular. Lihat Bekerja dengan tabel terkelola.
Tampilan di metastore Apache Hive
Anda dapat mendeklarasikan tampilan di metastore Apache Hive yang didukung oleh sumber data apa pun yang didukung oleh Azure Databricks. Di Katalog Unity, Anda hanya dapat mendeklarasikan tampilan terhadap tabel dan tampilan Katalog Unity, termasuk tabel asing, tampilan materialisasi, dan tabel Berbagi Delta.
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_table
didefinisikan menggunakan jalur/mnt/my_table
pemasangan 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_table
grup pengguna.- ACL tabel warisan hanya berlaku pada komputasi yang digabungkan dengan mode akses bersama atau gudang SQL.
- Tampilan
my_view
didefinisikan 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. - Ini memerlukan kebijakan akses data yang dikonfigurasi untuk komputasi yang menyediakan akses baca ke
'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'
.
Catatan
Ini adalah salah satu contoh perilaku tak terduga yang mungkin Anda temui, dan tidak komprehensif dari semua potensi jebakan yang disajikan oleh pandangan dalam metastore Apache Hive warisan. Databricks merekomendasikan penggunaan Unity Catalog untuk semua definisi tampilan.
Tabel Hive warisan dan dukungan HiveQL
Azure Databricks menyertakan beberapa dukungan warisan untuk tabel Apache 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 ini menjelaskan fungsionalitas Apache Hive warisan: