العمل مع الملفات على Azure Databricks

يوفر Azure Databricks العديد من الأدوات المساعدة وواجهات برمجة التطبيقات للتفاعل مع الملفات في المواقع التالية:

  • وحدات تخزين كتالوج Unity.
  • ملفات مساحة العمل.
  • تخزين كائن السحابة.
  • تركيبات DBFS وجذر DBFS.
  • التخزين المؤقت المرفق بعقدة برنامج التشغيل للمجموعة.

توفر هذه المقالة أمثلة للتفاعل مع الملفات في هذه المواقع للأدوات التالية:

  • Apache Spark.
  • Spark SQL وDatabricks SQL.
  • تلميحات نظام ملفات Databricks (dbutils.fs أو %fs).
  • Databricks CLI.
  • Databricks REST API.
  • أوامر Bash shell (%sh).
  • يتم تثبيت المكتبة ذات نطاق دفتر الملاحظات باستخدام %pip.
  • الباندا.
  • أدوات إدارة ملفات OSS Python ومعالجتها.

هام

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

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

هل أحتاج إلى توفير مخطط URI للوصول إلى البيانات؟

تتبع مسارات الوصول إلى البيانات في Azure Databricks أحد المعايير التالية:

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

    URI paths diagram

  • توفر مسارات نمط POSIX الوصول إلى البيانات بالنسبة لجذر برنامج التشغيل (/). لا تتطلب مسارات نمط POSIX مخططا أبدا. يمكنك استخدام وحدات تخزين كتالوج Unity أو عمليات تحميل DBFS لتوفير الوصول على غرار POSIX إلى البيانات في تخزين الكائنات السحابية. تتطلب العديد من أطر عمل التعلم الآلي ووحدات OSS Python النمطية الأخرى FUSE ويمكنها استخدام مسارات بنمط POSIX فقط.

    POSIX paths diagram

العمل مع الملفات في وحدات تخزين كتالوج Unity

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

الأداة مثال
Apache Spark spark.read.format("json").load("/Volumes/my_catalog/my_schema/my_volume/data.json").show()
Spark SQL وDatabricks SQL SELECT * FROM csv.`/Volumes/my_catalog/my_schema/my_volume/data.csv`;
LIST '/Volumes/my_catalog/my_schema/my_volume/';
أدوات نظام ملفات Databricks dbutils.fs.ls("/Volumes/my_catalog/my_schema/my_volume/")
%fs ls /Volumes/my_catalog/my_schema/my_volume/
Databricks CLI databricks fs cp /path/to/local/file dbfs:/Volumes/my_catalog/my_schema/my_volume/
Databricks REST API POST https://<databricks-instance>/api/2.1/jobs/create
{"name": "A multitask job", "tasks": [{..."libraries": [{"jar": "/Volumes/dev/environment/libraries/logging/Logging.jar"}],},...]}
أوامر Bash shell %sh curl http://<address>/text.zip -o /Volumes/my_catalog/my_schema/my_volume/tmp/text.zip
تثبيتات المكتبة %pip install /Volumes/my_catalog/my_schema/my_volume/my_library.whl
Pandas df = pd.read_csv('/Volumes/my_catalog/my_schema/my_volume/data.csv')
OSS Python os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory')

إشعار

dbfs:/ المخطط مطلوب عند العمل مع Databricks CLI.

العمل مع ملفات مساحة العمل

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

الأداة مثال
Apache Spark spark.read.format("json").load("file:/Workspace/Users/<user-folder>/data.json").show()
Spark SQL وDatabricks SQL SELECT * FROM json.`file:/Workspace/Users/<user-folder>/file.json`;
أدوات نظام ملفات Databricks dbutils.fs.ls("file:/Workspace/Users/<user-folder>/")
%fs ls file:/Workspace/Users/<user-folder>/
Databricks CLI databricks workspace list
Databricks REST API POST https://<databricks-instance>/api/2.0/workspace/delete
{"path": "/Workspace/Shared/code.py", "recursive": "false"}
أوامر Bash shell %sh curl http://<address>/text.zip -o /Workspace/Users/<user-folder>/text.zip
تثبيتات المكتبة %pip install /Workspace/Users/<user-folder>/my_library.whl
Pandas df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv')
OSS Python os.listdir('/Workspace/Users/<user-folder>/path/to/directory')

إشعار

file:/ المخطط مطلوب عند العمل مع Databricks Utilities أو Apache Spark أو SQL.

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

العمل مع الملفات في تخزين كائن السحابة

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

تستخدم الأمثلة التالية URIs للوصول إلى البيانات في تخزين كائن السحابة:

الأداة مثال
Apache Spark spark.read.format("json").load("abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json").show()
Spark SQL وDatabricks SQL SELECT * FROM csv.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json`; LIST 'abfss://container-name@storage-account-name.dfs.core.windows.net/path';
أدوات نظام ملفات Databricks dbutils.fs.ls("abfss://container-name@storage-account-name.dfs.core.windows.net/path/") %fs ls abfss://container-name@storage-account-name.dfs.core.windows.net/path/
Databricks CLI غير مدعوم
Databricks REST API غير مدعوم
أوامر Bash shell غير مدعوم
تثبيتات المكتبة %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl
Pandas غير مدعوم
OSS Python غير مدعوم

العمل مع الملفات في تركيبات DBFS وجذر DBFS

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

الأداة مثال
Apache Spark spark.read.format("json").load("/mnt/path/to/data.json").show()
Spark SQL وDatabricks SQL SELECT * FROM json.`/mnt/path/to/data.json`;
أدوات نظام ملفات Databricks dbutils.fs.ls("/mnt/path")
%fs ls /mnt/path
Databricks CLI databricks fs cp dbfs:/mnt/path/to/remote/file /path/to/local/file
Databricks REST API POST https://<host>/api/2.0/dbfs/delete --data '{ "path": "/tmp/HelloWorld.txt" }'
أوامر Bash shell %sh curl http://<address>/text.zip > /dbfs/mnt/tmp/text.zip
تثبيتات المكتبة %pip install /dbfs/mnt/path/to/my_library.whl
Pandas df = pd.read_csv('/dbfs/mnt/path/to/data.csv')
OSS Python os.listdir('/dbfs/mnt/path/to/directory')

إشعار

dbfs:/ المخطط مطلوب عند العمل مع Databricks CLI.

العمل مع الملفات في التخزين المؤقت المرفق بعقدة برنامج التشغيل

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

الأداة مثال
Apache Spark غير مدعوم
Spark SQL وDatabricks SQL غير مدعوم
أدوات نظام ملفات Databricks dbutils.fs.ls("file:/path")
%fs ls file:/path
Databricks CLI غير مدعوم
Databricks REST API غير مدعوم
أوامر Bash shell %sh curl http://<address>/text.zip > /tmp/text.zip
تثبيتات المكتبة غير مدعوم
Pandas df = pd.read_csv('/path/to/data.csv')
OSS Python os.listdir('/path/to/directory')

إشعار

file:/ المخطط مطلوب عند العمل مع Databricks Utilities.

نقل البيانات من التخزين المؤقت إلى وحدات التخزين

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

dbutils.fs.cp ("file:/<path>", "/Volumes/<catalog>/<schema>/<volume>/<path>")
%sh cp /<path> /Volumes/<catalog>/<schema>/<volume>/<path>
%fs cp file:/<path> /Volumes/<catalog>/<schema>/<volume>/<path>

أين تنتقل الملفات المحذوفة؟

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

راجع حذف كائن.

قيود واجهة برمجة تطبيقات الملفات المحلية

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

  • لا يوجد مرور بيانات اعتماد.

  • يحتوي Databricks على دعم محدود لعمليات ملفات مساحة العمل من الحوسبة بلا خادم ومن المجموعات ذات أوضاع الوصول إلى UC (المعينة والمشتركة، على التوالي). تعمل Databricks على تمكين المجموعات غير المدعومة حاليا.

اللغة نوع شبكة نظام المجموعة برنامج التشغيل أو UDF؟ مدعوم؟
Python مُعيَن برنامج التشغيل ‏‏نعم‬
Python مُعيَن UDF ‏‏نعم‬
Python مشتركة برنامج التشغيل ‏‏نعم‬
Python مشتركة UDF لا
التطوير مُعيَن برنامج التشغيل لا
التطوير مُعيَن UDF لا
التطوير مشتركة برنامج التشغيل ‏‏نعم‬
التطوير مشتركة UDF لا
  • إذا كان سير العمل يستخدم التعليمات البرمجية المصدر الموجودة في مستودع Git بعيد، فلا يمكنك الكتابة إلى الدليل الحالي أو الكتابة باستخدام مسار نسبي. اكتب البيانات إلى خيارات الموقع الأخرى الموضحة في العمل مع الملفات في تخزين كائن السحابة.

  • لا توجد عمليات إلحاق مباشرة.

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

  • لا توجد عمليات كتابة غير متتالية (عشوائية)، مثل كتابة ملفات Zip وExcel.

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

    # python
    import xlsxwriter
    from shutil import copyfile
    
    workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx')
    worksheet = workbook.add_worksheet()
    worksheet.write(0, 0, "Key")
    worksheet.write(0, 1, "Value")
    workbook.close()
    
    copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')
    
  • لا توجد ملفات متفرقة. لنسخ ملفات متفرقة، استخدم cp --sparse=never:

    $ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
    error writing '/dbfs/sparse.file': Operation not supported
    $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
    
  • لا يمكن للمنفذين الكتابة إلى ملفات مساحة العمل.

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

  • لا يمكنك استخدام git الأوامر عند الحفظ في ملفات مساحة العمل. لا يسمح بإنشاء الدلائل .git في ملفات مساحة العمل.

  • لا توجد ارتباطات.

تمكين ملفات مساحة العمل

ملفات مساحة عمل Databricks هي مجموعة من الملفات في مساحة عمل ليست دفاتر ملاحظات. لتمكين دعم الملفات غير المتصلة بدفتر الملاحظات في مساحة عمل Databricks، اتصل بواجهة برمجة تطبيقات /api/2.0/workspace-conf REST من دفتر ملاحظات أو بيئة أخرى مع إمكانية الوصول إلى مساحة عمل Databricks. يتم تمكين ملفات مساحة العمل بشكل افتراضي.

لتمكين أو إعادة تمكين الدعم للملفات غير المتصلة بدفتر الملاحظات في مساحة عمل Databricks، قم باستدعاء /api/2.0/workspace-conf والحصول على قيمة enableWorkspaceFileSystem المفتاح. إذا تم تعيينه إلى true، يتم تمكين الملفات غير الموجودة في دفتر الملاحظات بالفعل لمساحة العمل الخاصة بك.

يوضح المثال التالي كيف يمكنك استدعاء واجهة برمجة التطبيقات هذه من دفتر ملاحظات للتحقق مما إذا كانت ملفات مساحة العمل معطلة وإذا كان الأمر كذلك، فقم بإعادة تمكينها. لتعطيل ملفات مساحة العمل، قم بتعيين enableWorkspaceFilesystem إلى false باستخدام /api/2.0/workspace-conf واجهة برمجة التطبيقات.

مثال: دفتر ملاحظات لإعادة تمكين دعم ملف مساحة عمل Databricks

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