تحميل تخزين كائن السحابة على Azure Databricks

هام

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

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

كيف يقوم Azure Databricks بتحميل تخزين كائن السحابة؟

تنشئ عمليات تحميل Azure Databricks ارتباطا بين مساحة العمل وتخزين كائن السحابة، والذي يمكنك من التفاعل مع تخزين كائن السحابة باستخدام مسارات الملفات المألوفة بالنسبة إلى نظام ملفات Databricks. تعمل عمليات التحميل عن طريق إنشاء اسم مستعار محلي ضمن /mnt الدليل الذي يخزن المعلومات التالية:

  • موقع تخزين كائن السحابة.
  • مواصفات برنامج التشغيل للاتصال بحساب التخزين أو الحاوية.
  • بيانات اعتماد الأمان المطلوبة للوصول إلى البيانات.

ما هو بناء الجملة لتركيب التخزين؟

source يحدد URI لتخزين الكائن (ويمكنه ترميز بيانات اعتماد الأمان اختياريا). mount_point يحدد المسار المحلي في /mnt الدليل. تدعم بعض مصادر تخزين الكائنات وسيطة اختيارية encryption_type . بالنسبة لبعض أنماط الوصول، يمكنك تمرير مواصفات التكوين الإضافية كقاموس إلى extra_configs.

إشعار

توصي Databricks بتعيين تكوين Spark و Hadoop الخاصين بالتركيب كخيارات باستخدام extra_configs. وهذا يضمن أن التكوينات مرتبطة بالتركيب بدلا من نظام المجموعة أو جلسة العمل.

dbutils.fs.mount(
  source: str,
  mount_point: str,
  encryption_type: Optional[str] = "",
  extra_configs: Optional[dict[str:str]] = None
)

تحقق من مساحة العمل ومسؤولي السحابة قبل تكوين عمليات تحميل البيانات أو تغييرها، حيث يمكن أن يوفر التكوين غير المناسب وصولا غير آمن إلى جميع المستخدمين في مساحة العمل الخاصة بك.

إشعار

بالإضافة إلى الأساليب الموضحة في هذه المقالة، يمكنك أتمتة تركيب مستودع مع موفر Databricks Terraform databricks_mount.

إلغاء تحميل نقطة تحميل

لإلغاء تحميل نقطة تحميل، استخدم الأمر التالي:

dbutils.fs.unmount("/mnt/<mount-name>")

تحذير

لتجنب الأخطاء، لا تقم أبدا بتعديل نقطة تحميل أثناء قراءة الوظائف الأخرى لها أو الكتابة إليها. بعد تعديل التحميل، شغل dbutils.fs.refreshMounts() دائما على جميع أنظمة المجموعات الأخرى قيد التشغيل لنشر أي تحديثات للتركيب. راجع الأمر refreshMounts (dbutils.fs.refreshMounts).

تحميل ADLS Gen2 أو Blob Storage باستخدام ABFS

يمكنك تحميل البيانات في حساب تخزين Azure باستخدام أساس خدمة تطبيق Microsoft Entra ID (المعروف سابقا ب Azure Active Directory) للمصادقة. لمزيد من المعلومات، راجع Access storage باستخدام كيان الخدمة ومعرف Microsoft Entra (Azure Active Directory).

هام

  • يمكن لجميع المستخدمين في مساحة عمل Azure Databricks الوصول إلى حساب ADLS Gen2 المحمل. يجب منح كيان الخدمة الذي تستخدمه للوصول إلى حساب ADLS Gen2 حق الوصول فقط إلى حساب ADLS Gen2 هذا؛ يجب عدم منحه حق الوصول إلى موارد Azure الأخرى.
  • عند إنشاء نقطة تحميل من خلال نظام مجموعة، يمكن لمستخدمي نظام المجموعة الوصول على الفور إلى نقطة التحميل. لاستخدام نقطة التحميل في نظام مجموعة آخر قيد التشغيل، يجب تشغيل dbutils.fs.refreshMounts() على نظام المجموعة قيد التشغيل لجعل نقطة التحميل التي تم إنشاؤها حديثا متاحة للاستخدام.
  • يمكن أن يؤدي إلغاء تحميل نقطة تحميل أثناء تشغيل المهام إلى حدوث أخطاء. تأكد من أن مهام الإنتاج لا تلغى تحميل التخزين كجزء من المعالجة.
  • لا يتم تحديث نقاط التحميل التي تستخدم البيانات السرية تلقائيا. إذا كان التخزين المحمل يعتمد على سر يتم تدويره أو انتهاء صلاحيته أو حذفه، يمكن أن تحدث أخطاء، مثل 401 Unauthorized. لحل مثل هذا الخطأ، يجب إلغاء تحميل التخزين وإعادة تحميله.
  • يجب تمكين مساحة الاسم الهرمية (HNS) لتحميل حساب تخزين Azure Data Lake Storage Gen2 بنجاح باستخدام نقطة نهاية ABFS.

قم بتشغيل ما يلي في دفتر الملاحظات الخاص بك للمصادقة وإنشاء نقطة تحميل.

configs = {"fs.azure.account.auth.type": "OAuth",
          "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
          "fs.azure.account.oauth2.client.id": "<application-id>",
          "fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
          "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<directory-id>/oauth2/token"}

# Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mount_point = "/mnt/<mount-name>",
  extra_configs = configs)
val configs = Map(
  "fs.azure.account.auth.type" -> "OAuth",
  "fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
  "fs.azure.account.oauth2.client.id" -> "<application-id>",
  "fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
  "fs.azure.account.oauth2.client.endpoint" -> "https://login.microsoftonline.com/<directory-id>/oauth2/token")
// Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mountPoint = "/mnt/<mount-name>",
  extraConfigs = configs)

الاستبدال

  • <application-id>مع معرف التطبيق (العميل) لتطبيق Azure Active Directory.
  • <scope-name> مع اسم النطاق السري Databricks.
  • <service-credential-key-name> باسم المفتاح الذي يحتوي على سر العميل.
  • <directory-id>مع معرف الدليل (المستأجر) لتطبيق Azure Active Directory.
  • <container-name> باسم حاوية في حساب تخزين ADLS Gen2.
  • <storage-account-name> مع اسم حساب تخزين ADLS Gen2.
  • <mount-name> باسم نقطة التحميل المقصودة في DBFS.