الاتصال ب 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.
إشعار
- تم إهمال برنامج تشغيل Windows Azure Storage Blob القديم (WASB). ABFS له فوائد عديدة على WASB. راجع وثائق Azure على ABFS. للحصول على وثائق للعمل مع برنامج تشغيل WASB القديم، راجع الاتصال ب Azure Blob Storage باستخدام WASB (قديم).
- أعلنت Azure عن إيقاف Azure Data Lake Storage Gen1 المعلق. توصي Azure Databricks بترحيل جميع البيانات من Azure Data Lake Storage Gen1 إلى Azure Data Lake Storage Gen2. إذا لم تكن قد قمت بالترحيل بعد، فشاهد الوصول إلى Azure Data Lake Storage Gen1 من 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
فيما يلي أنماط تخزين مهملة:
لم يعد Databricks يوصي بتحميل مواقع البيانات الخارجية إلى Databricks Filesystem. راجع تحميل تخزين كائن السحابة على Azure Databricks.
لم يعد Databricks يوصي باستخدام تمرير بيانات الاعتماد مع Azure Data Lake Storage Gen2. راجع الوصول إلى Azure Data Lake Storage باستخدام تمرير بيانات اعتماد معرف Microsoft Entra (قديم).