الاتصال ب Azure Data Lake Storage Gen2 وBlob Storage

إشعار

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

توضح هذه المقالة كيفية الاتصال ب Azure Data Lake Storage Gen2 وBlob Storage من Azure Databricks.

إشعار

الاتصال ب Azure Data Lake Storage Gen2 أو Blob Storage باستخدام بيانات اعتماد Azure

يمكن استخدام بيانات الاعتماد التالية للوصول إلى Azure Data Lake Storage Gen2 أو Blob Storage:

  • OAuth 2.0 مع كيان خدمة معرف Microsoft Entra: توصي Databricks باستخدام أساسيات خدمة معرف Microsoft Entra للاتصال ب Azure Data Lake Storage Gen2. لإنشاء كيان خدمة معرف Microsoft Entra وتوفير الوصول إلى حسابات تخزين Azure، راجع الوصول إلى التخزين باستخدام كيان الخدمة ومعرف Microsoft Entra (Azure Active Directory).

    لإنشاء كيان خدمة معرف Microsoft Entra، يجب أن يكون لديك Application Administrator الدور أو Application.ReadWrite.All الإذن في معرف Microsoft Entra. لتعيين أدوار على حساب تخزين، يجب أن تكون مالكا أو مستخدما له دور مسؤول وصول المستخدم Azure RBAC على حساب التخزين.

    هام

    لا يدعم تخزين Blob أساسيات خدمة معرف Microsoft Entra.

  • توقيعات الوصول المشترك (SAS): يمكنك استخدام رموز SAS المميزة للتخزين للوصول إلى تخزين Azure. باستخدام SAS، يمكنك تقييد الوصول إلى حساب تخزين باستخدام الرموز المميزة المؤقتة مع التحكم في الوصول الدقيق.

    يمكنك فقط منح أذونات رمز SAS المميز الذي لديك على حساب التخزين أو الحاوية أو الملف بنفسك.

  • مفاتيح الحساب: يمكنك استخدام مفاتيح الوصول إلى حساب التخزين لإدارة الوصول إلى Azure Storage. توفر مفاتيح الوصول إلى حساب التخزين وصولا كاملا إلى تكوين حساب التخزين، بالإضافة إلى البيانات. توصي Databricks باستخدام أساس خدمة معرف Microsoft Entra أو رمز SAS المميز للاتصال بتخزين Azure بدلا من مفاتيح الحساب.

    لعرض مفاتيح الوصول للحساب، يجب أن يكون لديك دور المالك أو المساهم أو خدمة مشغل مفتاح حساب التخزين على حساب التخزين.

توصي Databricks باستخدام النطاقات السرية لتخزين جميع بيانات الاعتماد. يمكنك منح المستخدمين وكيانات الخدمة والمجموعات في مساحة العمل حق الوصول لقراءة النطاق السري. يحمي هذا بيانات اعتماد Azure مع السماح للمستخدمين بالوصول إلى تخزين Azure. لإنشاء نطاق سري، راجع النطاقات السرية.

تعيين خصائص Spark لتكوين بيانات اعتماد Azure للوصول إلى تخزين Azure

يمكنك تعيين خصائص Spark لتكوين بيانات اعتماد Azure للوصول إلى تخزين Azure. يمكن تحديد نطاق بيانات الاعتماد إما إلى نظام مجموعة أو دفتر ملاحظات. استخدم كل من التحكم في الوصول إلى نظام المجموعة والتحكم في الوصول إلى دفتر الملاحظات معا لحماية الوصول إلى تخزين Azure. راجع حساب الأذونات والتعاون باستخدام دفاتر ملاحظات Databricks.

إشعار

يمكن أيضا استخدام أساسيات خدمة معرف Microsoft Entra للوصول إلى تخزين Azure من مستودع SQL، راجع تمكين تكوين الوصول إلى البيانات.

لتعيين خصائص Spark، استخدم القصاصة البرمجية التالية في تكوين Spark لنظام مجموعة أو دفتر ملاحظات:

خدمة Azure الأساسي

استخدم التنسيق التالي لتعيين تكوين Spark لنظام المجموعة:

spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token

يمكنك استخدام spark.conf.set في دفاتر الملاحظات، كما هو موضح في المثال التالي:

service_credential = dbutils.secrets.get(scope="<secret-scope>",key="<service-credential-key>")

spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")

الاستبدال

  • <secret-scope> مع اسم النطاق السري Databricks.
  • <service-credential-key> باسم المفتاح الذي يحتوي على سر العميل.
  • <storage-account> باسم حساب تخزين Azure.
  • <application-id>مع معرف التطبيق (العميل) لتطبيق معرف Microsoft Entra.
  • <directory-id>مع معرف الدليل (المستأجر) لتطبيق معرف Microsoft Entra.

رموز SAS المميزة

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

spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "SAS")
spark.conf.set("fs.azure.sas.token.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")
spark.conf.set("fs.azure.sas.fixed.token.<storage-account>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope>", key="<sas-token-key>"))

الاستبدال

  • <storage-account> مع اسم حساب Azure Storage.
  • <scope> مع اسم النطاق السري Azure Databricks.
  • <sas-token-key> باسم المفتاح الذي يحتوي على رمز SAS المميز لتخزين Azure.

‏‏مفتاح الحساب

spark.conf.set(
    "fs.azure.account.key.<storage-account>.dfs.core.windows.net",
    dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))

الاستبدال

  • <storage-account> مع اسم حساب Azure Storage.
  • <scope> مع اسم النطاق السري Azure Databricks.
  • <storage-account-access-key> باسم المفتاح الذي يحتوي على مفتاح الوصول إلى حساب تخزين Azure.

الوصول إلى تخزين Azure

بمجرد تكوين بيانات الاعتماد بشكل صحيح للوصول إلى حاوية تخزين Azure، يمكنك التفاعل مع الموارد في حساب التخزين باستخدام URIs. توصي Databricks باستخدام abfss برنامج التشغيل لمزيد من الأمان.

spark.read.load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")

dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
CREATE TABLE <database-name>.<table-name>;

COPY INTO <database-name>.<table-name>
FROM 'abfss://container@storageAccount.dfs.core.windows.net/path/to/folder'
FILEFORMAT = CSV
COPY_OPTIONS ('mergeSchema' = 'true');

مثال لدفتر الملاحظات

ADLS Gen2 OAuth 2.0 مع دفتر ملاحظات أساسيات خدمة Microsoft Entra ID (المعروف سابقا ب Azure Active Directory)

الحصول على دفتر الملاحظات

المشكلات المعروفة ل Azure Data Lake Storage Gen2

إذا حاولت الوصول إلى حاوية تخزين تم إنشاؤها من خلال مدخل Microsoft Azure، فقد تتلقى الخطأ التالي:

StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.

عند تمكين مساحة اسم هرمية، لا تحتاج إلى إنشاء حاويات من خلال مدخل Microsoft Azure. إذا رأيت هذه المشكلة، فاحذف حاوية Blob من خلال مدخل Microsoft Azure. بعد بضع دقائق، يمكنك الوصول إلى الحاوية. بدلا من ذلك، يمكنك تغيير URI الخاص بك abfss لاستخدام حاوية مختلفة، طالما لم يتم إنشاء هذه الحاوية من خلال مدخل Microsoft Azure.

راجع المشكلات المعروفة مع Azure Data Lake Storage Gen2 في وثائق Microsoft.

أنماط مهملة لتخزين البيانات والوصول إليها من Azure Databricks

فيما يلي أنماط تخزين مهملة: