ما هي وحدات تخزين كتالوج Unity؟

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

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

توصي Databricks باستخدام وحدات التخزين لتنظيم الوصول إلى جميع البيانات غير الجدولية. مثل الجداول، يمكن إدارة وحدات التخزين أو خارجها.

هام

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

توفر المقالات التالية المزيد من المعلومات حول العمل مع وحدات التخزين:

إشعار

عند العمل مع وحدات التخزين، يجب استخدام مستودع SQL أو نظام مجموعة يقوم بتشغيل Databricks Runtime 13.3 LTS أو أعلى، ما لم تكن تستخدم واجهات مستخدم Azure Databricks مثل مستكشف الكتالوج.

ما هي وحدة التخزين المدارة؟

وحدة التخزين المدارة هي وحدة تخزين تحكمها كتالوج Unity تم إنشاؤها داخل موقع التخزين المدار للمخطط المحتوي. راجع تحديد موقع تخزين مدار في كتالوج Unity.

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

ما هي وحدة التخزين الخارجية؟

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

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

ما المسار المستخدم للوصول إلى الملفات في وحدة تخزين؟

تقع وحدات التخزين في المستوى الثالث من مساحة الاسم ثلاثية المستوى في كتالوج Unity (catalog.schema.volume):

رسم تخطيطي لنموذج كائن كتالوج Unity، يركز على مستوى الصوت

المسار للوصول إلى وحدات التخزين هو نفسه سواء كنت تستخدم Apache Spark أو SQL أو Python أو لغات ومكتبات أخرى. يختلف هذا عن أنماط الوصول القديمة للملفات في تخزين الكائن المرتبط بمساحة عمل Azure Databricks.

يستخدم مسار الوصول إلى الملفات في وحدات التخزين التنسيق التالي:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

يدعم Azure Databricks أيضا نظاما اختياريا dbfs:/ عند العمل مع Apache Spark، لذلك يعمل المسار التالي أيضا:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

يتوافق التسلسل /<catalog>/<schema>/<volume> في المسار مع أسماء عناصر كتالوج Unity الثلاثة المقترنة بالملف. عناصر المسار هذه للقراءة فقط ولا يمكن للمستخدمين كتابتها مباشرة، ما يعني أنه لا يمكن إنشاء هذه الدلائل أو حذفها باستخدام عمليات نظام الملفات. تتم إدارتها تلقائيا والاحتفاظ بها متزامنة مع كيانات كتالوج Unity المقابلة.

إشعار

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

المسارات المحجوزة لوحدات التخزين

تقدم وحدات التخزين المسارات المحجوزة التالية المستخدمة للوصول إلى وحدات التخزين:

  • dbfs:/Volumes
  • /Volumes

إشعار

يتم أيضا حجز المسارات للكتابات المحتملة لهذه المسارات من واجهات برمجة تطبيقات Apache Spark و dbutils، بما في ذلك /volumes، /Volume، /volume، سواء كانت مسبوقة أم dbfs:/لا. /dbfs/Volumes المسار محجوز أيضا، ولكن لا يمكن استخدامه للوصول إلى وحدات التخزين.

وحدات التخزين مدعومة فقط على Databricks Runtime 13.3 LTS وما فوق. في Databricks Runtime 12.2 LTS وما يليه، قد تنجح العمليات ضد /Volumes المسارات، ولكن يمكن كتابة البيانات إلى أقراص تخزين سريعة الزوال مرفقة لمجموعات الحوسبة بدلا من استمرار البيانات إلى وحدات تخزين كتالوج Unity كما هو متوقع.

هام

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

القيود

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

إشعار

وحدات التخزين لا تدعم dbutils.fs الأوامر الموزعة على المنفذين.

تُطبق القيود التالية:

في Databricks Runtime 14.3 LTS وما فوق:

  • في مجموعات المستخدم الفردي، لا يمكنك الوصول إلى وحدات التخزين من مؤشرات الترابط والمعالجة الفرعية في Scala.

في Databricks Runtime 14.2 وما يلي:

  • عند الحوسبة التي تم تكوينها باستخدام وضع الوصول المشترك، لا يمكنك استخدام UDFs للوصول إلى وحدات التخزين.
    • يمكن لكل من Python أو Scala الوصول إلى FUSE من برنامج التشغيل ولكن ليس من المنفذين.
    • يمكن تشغيل التعليمات البرمجية Scala التي تنفذ عمليات الإدخال/الإخراج على برنامج التشغيل ولكن ليس المنفذين.
  • عند الحوسبة التي تم تكوينها باستخدام وضع وصول مستخدم واحد، لا يوجد دعم ل FUSE في Scala أو تعليمة Scala البرمجية IO التي تصل إلى البيانات باستخدام مسارات وحدة التخزين أو Scala UDFs. يتم دعم Python UDFs في وضع وصول مستخدم واحد.

على جميع إصدارات وقت تشغيل Databricks المدعومة:

  • لا تدعم UDFs كتالوج Unity الوصول إلى مسارات ملفات وحدة التخزين.

  • لا يمكنك الوصول إلى وحدات التخزين من مجموعات البيانات الموزعة المرنة.

  • لا يمكنك استخدام spark-submit مع JARs المخزنة في وحدة تخزين.

  • لا يمكنك تعريف التبعيات للمكتبات الأخرى التي يتم الوصول إليها عبر مسارات وحدة التخزين داخل عجلة أو ملف JAR.

  • لا يمكنك سرد كائنات كتالوج Unity باستخدام الأنماط /Volumes/<catalog-name> أو /Volumes/<catalog-name>/<schema-name> . يجب استخدام مسار مؤهل بالكامل يتضمن اسم وحدة تخزين.

  • لا تدعم نقطة نهاية DBFS لواجهة برمجة تطبيقات REST مسارات وحدات التخزين.

  • لا يمكنك تحديد وحدات التخزين كوجهة لتسليم سجل نظام المجموعة.

  • %sh mv غير معتمد لنقل الملفات بين وحدات التخزين. استخدم dbutils.fs.mv أو %sh cp بدلا من ذلك.

  • لا يمكنك إنشاء نظام ملفات Hadoop مخصص بوحدات تخزين، مما يعني أن ما يلي غير مدعوم:

    import org.apache.hadoop.fs.Path
    val path =  new Path("dbfs:/Volumes/main/default/test-volume/file.txt")
    val fs = path.getFileSystem(sc.hadoopConfiguration)
    fs.listStatus(path)
    
  • وحدات التخزين غير متوفرة في مناطق Azure Government أو مساحات العمل مع توافق FedRAMP.

  • يجب استخدام تنسيق المسار مع نظام dbfs:/ في لوحة تكوين مكتبة Azure Data Factory. على سبيل المثال، dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file