العمل مع كتالوج Unity و Hive metastore القديم

توضح هذه المقالة كيفية استخدام مخزن بيانات تعريف Hive لكل مساحة عمل عند تمكين مساحة عمل Azure Databricks لكتالوج Unity.

إذا كانت مساحة العمل الخاصة بك في الخدمة قبل تمكينها لكتالوج Unity، فمن المحتمل أن تحتوي على Hive metastore يحتوي على البيانات التي تريد متابعة استخدامها. توصي Databricks بترحيل الجداول التي يديرها Hive metastore إلى مخزن بيانات تعريف كتالوج Unity، ولكن إذا اخترت عدم القيام بذلك، فإن هذه المقالة تشرح كيفية العمل مع البيانات التي يديرها كل من metastores.

الاستعلام عن Hive metastore في كتالوج Unity

يعد مخزن بيانات تعريف كتالوج Unity مضافا، ما يعني أنه يمكن استخدامه مع Hive metastore لكل مساحة عمل في Azure Databricks. يظهر Hive metastore ككتالوج من المستوى الأعلى يسمى hive_metastore في مساحة الاسم ثلاثية المستويات.

على سبيل المثال، يمكنك الرجوع إلى جدول يسمى sales_raw في sales المخطط في Hive metastore القديم باستخدام التعليمة البرمجية التالية:

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"))

يمكنك أيضا تحديد الكتالوج والمخطط باستخدام عبارة 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"))

التحكم في الوصول في كتالوج Unity و Hive metastore

إذا قمت بتكوين التحكم في الوصول إلى الجدول على Hive metastore، تستمر Databricks في فرض عناصر التحكم في الوصول هذه للبيانات الموجودة في الكتالوج hive_metastore للمجموعات التي تعمل في وضع الوصول المشترك. يختلف نموذج الوصول إلى كتالوج Unity قليلا عن عناصر التحكم في الوصول القديمة، مثل عدم وجود DENY عبارات. Hive metastore هو كائن على مستوى مساحة العمل. تشير الأذونات المعرفة داخل الكتالوج hive_metastore دائما إلى المستخدمين المحليين والمجموعات في مساحة العمل. راجع الاختلافات من التحكم في الوصول إلى الجدول.

الاختلافات من التحكم في الوصول إلى الجدول

يحتوي كتالوج Unity على الاختلافات الرئيسية التالية من استخدام عناصر التحكم في الوصول إلى الجدول في مخزن بيانات تعريف Hive القديم في كل مساحة عمل.

يحتوي نموذج التحكم في الوصول في كتالوج Unity على الاختلافات التالية من التحكم في الوصول إلى الجدول:

  • مجموعات الحسابات: يتم تطبيق نهج التحكم في الوصول في كتالوج Unity على مجموعات الحسابات، بينما يتم تطبيق نهج التحكم في الوصول ل Hive metastore على المجموعات المحلية لمساحة العمل. راجع الفرق بين مجموعات الحسابات والمجموعات المحلية لمساحة العمل.
  • USE CATALOG والأذونات USE SCHEMA مطلوبة على الكتالوج والمخطط لكافة العمليات على الكائنات داخل الكتالوج أو المخطط: بغض النظر عن امتيازات كيان في جدول، يجب أن يكون للمدير USE CATALOG أيضا الامتياز في الكتالوج الأصل الخاص به للوصول إلى المخطط وامتياز USE SCHEMA الوصول إلى الكائنات داخل المخطط. مع عناصر التحكم في الوصول إلى الجدول على مستوى مساحة العمل، من ناحية أخرى، منح USAGEUSAGE على كتالوج الجذر منح تلقائيا على جميع قواعد البيانات، ولكن USAGE في كتالوج الجذر غير مطلوب.
  • طرق العرض: في كتالوج Unity، لا يحتاج مالك طريقة العرض إلى أن يكون مالكا للجداول وطرق العرض المشار إليها في طريقة العرض. يعد الحصول على الامتياز SELECT كافيا، جنبا إلى جنب مع USE SCHEMA المخطط الأصل لطرق العرض وعلى USE CATALOG الكتالوج الأصل. باستخدام عناصر التحكم في الوصول إلى الجدول على مستوى مساحة العمل، يجب أن يكون مالك طريقة العرض مالكا لجميع الجداول وطرق العرض المشار إليها.
  • لا يوجد دعم ل ANY FILE أو ANONYMOUS FUNCTION: في كتالوج Unity، لا يوجد مفهوم ANY FILE أو ANONYMOUS FUNCTION قابل للتأمين قد يسمح للمستخدم غير المميز بتشغيل التعليمات البرمجية المميزة.
  • بلا READ_METADATA امتياز: يدير كتالوج Unity الوصول لعرض بيانات التعريف بطريقة مختلفة. راجع امتيازات كتالوج Unity والكائنات القابلة للتأمين.

الصلات بين كتالوج Unity وعناصر Hive metastore

باستخدام رمز مساحة الاسم ثلاثية المستويات، يمكنك ضم البيانات في مخزن بيانات تعريف كتالوج Unity مع البيانات في مخزن بيانات Hive القديم.

إشعار

سيعمل الربط بالبيانات في Hive metastore القديم فقط على مساحة العمل حيث توجد تلك البيانات. تؤدي محاولة تشغيل مثل هذه الصلة في مساحة عمل أخرى إلى حدوث خطأ. توصي Azure Databricks بترقية الجداول وطرق العرض القديمة إلى كتالوج Unity.

يقوم المثال التالي بضم النتائج من sales_current الجدول في مخزن بيانات تعريف Hive القديم مع sales_historical الجدول في مخزن بيانات تعريف كتالوج Unity عندما تكون الحقول متساوية order_id .

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")
))

الكتالوج الافتراضي

يتم تكوين كتالوج افتراضي لكل مساحة عمل تم تمكينها ل Unity Catalog.

إذا حذفت اسم كتالوج المستوى الأعلى عند إجراء عمليات البيانات، فسيتم افتراض الكتالوج الافتراضي.

يعتمد الكتالوج الافتراضي الذي تم تكوينه في البداية لمساحة العمل الخاصة بك على كيفية تمكين مساحة العمل الخاصة بك للكتالوج Unity:

  • إذا تم تمكين مساحة العمل الخاصة بك ل Unity Catalog تلقائيا، فسيتم تعيين كتالوج مساحة العمل ككتالوج افتراضي. راجع التمكين التلقائي للكتالوج Unity.
  • إذا تم تمكين مساحة العمل الخاصة بك ل Unity Catalog يدويا، فقد تم تعيين الكتالوج hive_metastore ككتالوج افتراضي.

إذا كنت تنتقل من Hive metastore إلى كتالوج Unity داخل مساحة عمل موجودة، فمن المنطقي عادة استخدام hive_metastore كتالوج افتراضي لتجنب التأثير على التعليمات البرمجية الموجودة التي تشير إلى metastore الخلية.

لمعرفة كيفية الحصول على الكتالوج الافتراضي وتبديله، راجع إدارة الكتالوج الافتراضي

أذونات الوصول إلى البيانات على نطاق المجموعة

عند استخدام Hive metastore جنبا إلى جنب مع كتالوج Unity، يتم استخدام بيانات اعتماد الوصول إلى البيانات المقترنة بالمجموعة للوصول إلى بيانات Hive metastore ولكن ليس البيانات المسجلة في كتالوج Unity.

إذا كان المستخدمون يصلون إلى مسارات خارج كتالوج Unity (مثل مسار غير مسجل كجدول أو موقع خارجي) فسيتم استخدام بيانات اعتماد الوصول المعينة إلى نظام المجموعة.

راجع الاتصال إلى Azure Data Lake Storage Gen2 وBlob Storage.

ترقية الجداول القديمة إلى كتالوج Unity

لا تستفيد الجداول في Hive metastore من المجموعة الكاملة من ميزات الأمان والحوكمة التي يقدمها كتالوج Unity، مثل التدقيق المضمن والتحكم في الوصول. توصي Databricks بترقية الجداول القديمة عن طريق إضافتها إلى كتالوج Unity.