أفضل الممارسات لكتالوج DBFS وUnity

يقدم كتالوج Unity عددا من التكوينات والمفاهيم الجديدة التي تتعامل مع إدارة البيانات بشكل مختلف تماما عن DBFS. توضح هذه المقالة العديد من أفضل الممارسات حول العمل مع المواقع الخارجية لكتالوج Unity وDBFS.

توصي Databricks بعدم استخدام DBFS وتخزين الكائنات السحابية المثبتة لمعظم حالات الاستخدام في مساحات عمل Azure Databricks الممكنة لكتالوج Unity. توضح هذه المقالة بعض السيناريوهات التي يجب عليك فيها استخدام تخزين كائن السحابة المحمل. لاحظ أن Databricks لا يوصي باستخدام جذر DBFS بالاقتران مع كتالوج Unity، إلا إذا كان يجب ترحيل الملفات أو البيانات المخزنة هناك إلى كتالوج Unity.

كيف يتم استخدام DBFS في مساحات العمل الممكنة لكتالوج Unity؟

الإجراءات التي يتم تنفيذها مقابل الجداول في hive_metastore استخدام أنماط الوصول إلى البيانات القديمة، والتي قد تتضمن بيانات اعتماد التخزين والبيانات التي يديرها DBFS. يتم تخزين الجداول المدارة في نطاق hive_metastore مساحة العمل على جذر DBFS.

كيف يعمل DBFS في وضع وصول مستخدم واحد؟

المجموعات المكونة مع وضع وصول مستخدم واحد لها حق الوصول الكامل إلى DBFS، بما في ذلك جميع الملفات في جذر DBFS والبيانات المثبتة.

كيف يعمل DBFS في وضع الوصول المشترك؟

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

للتفاعل مع الملفات مباشرة باستخدام DBFS، يجب أن يكون لديك ANY FILE أذونات الممنوحة. نظرا إلى ANY FILE أنه يسمح للمستخدمين بتجاوز قوائم التحكم بالوصول إلى الجداول القديمة في hive_metastore والوصول إلى جميع البيانات التي يديرها DBFS، يوصي Databricks بالحذر عند منح هذا الامتياز.

لا تستخدم DBFS مع المواقع الخارجية كتالوج Unity

يؤمن كتالوج Unity الوصول إلى البيانات في المواقع الخارجية باستخدام مسارات URI السحابية الكاملة لتحديد المنح على دلائل تخزين الكائنات المدارة. تستخدم عمليات تحميل DBFS نموذج وصول بيانات مختلف تماما يتجاوز كتالوج Unity بالكامل. توصي Databricks بعدم إعادة استخدام وحدات تخزين الكائنات السحابية بين عمليات تحميل DBFS ووحدات التخزين الخارجية UC، بما في ذلك عند مشاركة البيانات عبر مساحات العمل أو الحسابات.

تأمين التخزين المدار بواسطة كتالوج Unity

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

توصي Databricks بما يلي لمواقع التخزين المدارة:

  • استخدم حسابات تخزين جديدة أو مستودعات جديدة.
  • تعريف نهج هوية مخصص ل Unity Catalog.
  • تقييد جميع الوصول إلى Azure Databricks التي يديرها كتالوج Unity.
  • تقييد جميع الوصول إلى نهج الوصول إلى الهوية التي تم إنشاؤها لكتالوج Unity.

إضافة بيانات موجودة إلى مواقع خارجية

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

يجب عدم تحميل حساب تخزين يستخدم كجذر DBFS كموقع خارجي في كتالوج Unity.

يتم تجاهل تكوينات نظام المجموعة بواسطة الوصول إلى نظام ملفات كتالوج Unity

لا يحترم كتالوج Unity تكوينات نظام المجموعة لإعدادات نظام الملفات. وهذا يعني أن إعدادات نظام ملفات Hadoop لتكوين سلوك مخصص مع تخزين كائن السحابة لا تعمل عند الوصول إلى البيانات باستخدام كتالوج Unity.

القيود حول الوصول إلى مسار متعدد

بينما يمكنك بشكل عام استخدام كتالوج Unity وDBFS معا، لا يمكن الرجوع إلى المسارات التي تساوي أو تشترك في علاقة أصل/تابع في نفس الأمر أو خلية دفتر الملاحظات باستخدام أساليب وصول مختلفة.

على سبيل المثال، إذا تم تعريف جدول foo خارجي في hive_metastore الموقع a/b/c في وتم تعريف موقع خارجي في كتالوج Unity على a/b/، فإن التعليمات البرمجية التالية ستطرح خطأ:

spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")

لن يظهر هذا الخطأ إذا تم تقسيم هذا المنطق إلى خليتين:

df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")