نظام ملفات ستريك البيانات (DBFS)

Databricks ملف النظام (DBFS) هو نظام الملفات الموزعة التي شنت في مساحة عمل Azure Databricks والمتاحة على مجموعات البيانات Azure. DBFS هو تجريد مبني على تخزين الكائن القابل للتطوير ويقدم الفوائد التالية:

  • يسمح لك بتحميل كائنات التخزين بحيث يمكنك الوصول إلى البيانات بسهولة دون الحاجة إلى بيانات الاعتماد.
  • يسمح لك بالتفاعل مع تخزين الكائنات باستخدام دلالات الدليل والملف بدلًا من عناوين URL للتخزين.
  • تستمر ملفات تخزين الكائن، لذلك لن تفقد البيانات بعد إنهائك نظام المجموعة.

معلومات هامة حول أذونات DBFS

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

جذر DBFS

يعرف موقع التخزين الافتراضي في DBFS جذر DBFS. يتم تخزين عدة أنواع من البيانات في المواقع الجذر DBFS التالية:

  • /FileStoreملفات البيانات المستوردة، والمؤامرات التي تم إنشاؤها، والمكتبات التي تم تحميلها. راجع مواقع جذر DBFS الخاصة.
  • /databricks-datasetsنماذج مجموعات البيانات العامة. راجع مواقع جذر DBFS الخاصة.
  • /databricks-resultsالملفات التي تم إنشاؤها بواسطة تحميل /databricks-results للاستعلام.
  • /databricks/initالبرامج النصية العالمية و المسماة بالكتلة ( /databricks/init).
  • /user/hive/warehouseالبيانات وبيانات التعريف لجداول الخلية غير الخارجية.

في مساحة عمل جديدة جذر DBFS يحتوي على المجلدات الافتراضية التالية:

DBFS root default folders

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

توصيات التكوين والاستخدام

يتم إنشاء جذر DBFS أثناء إنشاء مساحة العمل.

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

تشفير اختياري لبيانات جذر DBFS باستخدام مفتاح مدار من قبل العميل

يمكنك تشفير البيانات الجذر DBFS باستخدام مفتاح مدار من قبل العميل. راجع تكوين المفاتيح المدارة من قبل العميل لجذر DBFS

مواقع جذر DBFS الخاصة

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

تصفح DBFS باستخدام واجهة المستخدم

يمكنك استعراض والبحث عن كائنات DBFS باستخدام مستعرض الملفات DBFS.

ملاحظة

يجب تمكين مستخدم مسؤول واجهة المستعرض DBFS قبل أن تتمكن من استخدامه. راجع إدارة مستعرض الملفات DBFS.

  1. انقر فوق Data Iconالبيانات في الشريط الجانبي.
  2. انقر فوق الزر DBFS في أعلى الصفحة.

يعرض المستعرض كائنات DBFS في تسلسل هرمي لخطوط السباحة العمودية. حدد كائن لتوسيع التسلسل الهرمي. استخدم بحث البادئة في أي رحلة للعثور على كائن DBFS.

Browse DBFS

يمكنك أيضا سرد DBFS الكائنات باستخدام DBFS CLIDBFS API 2.0 و Databricks ملف نظام الأداة المساعدة (dbutils.fs) واجهات برمجة التطبيقات الشرارة واجهات برمجة التطبيقات الملف المحلي. راجع الوصول إلى DBFS.

تحميل تخزين الكائن إلى DBFS

يسمح لك تخزين الكائنات المتصاعدة إلى DBFS بالوصول إلى الكائنات في تخزين الكائنات كما لو كانت على نظام الملفات المحلي.

للحصول على معلومات حول كيفية تحميل وإلغاء تحميل حاويات تخزين Azure Blob وحسابات تخزين بحيرة البيانات Azure، راجع _، تخزين بحيرة بيانات Mount Azure إلى DBFS باستخدام تمرير بيانات الاعتماد، ومورد Mount Azure Data Lake Storage Gen1 باستخدام أساس الخدمة وOAuth 2.0، وتخزين Mount ADLS Gen2.

هام

لا يتم اعتماد عمليات التحميل المتداخلة. على سبيل المثال، البنية التالية غير معتمدة:

  • storage1 شنت على أنها /mnt/storage1
  • storage2 شنت على أنها /mnt/storage1/storage2

توصي Databricks بإنشاء إدخالات تحميل منفصلة لكل كائن تخزين:

  • storage1 شنت على أنها /mnt/storage1
  • storage2 شنت على أنها /mnt/storage2

الوصول إلى DBFS

هام

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

يمكنك تحميل البيانات إلى DBFS باستخدام واجهة تحميل الملفات، ويمكنك تحميل والوصول إلى كائنات DBFS باستخدام DBFS CLI، DBFS API 2.0، Databricks ملف نظام الأداة المساعدة (dbutils.fs)،واجهات برمجة التطبيقات سبارك، و واجهات برمجة التطبيقات الملف المحلي.

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

في هذا القسم:

DBFS و مسارات عقدة برنامج التشغيل المحلي

يمكنك العمل مع الملفات على DBFS أو على عقدة برنامج التشغيل المحلي من الكتلة. يمكنك الوصول إلى نظام الملفات باستخدام أوامر سحرية مثل أو %sh. يمكنك أيضا استخدام الأداة المساعدة نظام الملفات Databricks (dbutils.fs)..

يستخدم Azure Databricks تحميل FUSE لتوفير الوصول المحلي إلى الملفات المخزنة في السحابة. تحميل FUSE هو نظام ملفات ظاهري آمن.

الوصول إلى الملفات على DBFS

المسار إلى تخزين المدونة الافتراضي (الجذر) هو dbfs:/.

الموقع الافتراضي و %fsdbutils.fs هو الجذر. وهكذا ، لقراءة من أو الكتابة إلى الجذر أو دلو خارجي :

%fs <command> /<path>
dbutils.fs.<command> ("/<path>/")

%sh القراءة من نظام الملفات المحلي بشكل افتراضي. للوصول إلى الجذر أو مسارات المحملة في الجذر مع %sh، قم ببادأة المسار باستخدام /dbfs/. حالة الاستخدام النموذجية هي إذا كنت تعمل مع مكتبات عقدة واحدة مثل TensorFlow أو scikit-learn وتريد قراءة البيانات وكتابتها إلى التخزين السحابي.

%sh <command> /dbfs/<path>/

يمكنك أيضا استخدام واجهات برمجة التطبيقات نظام الملفات عقدة واحدة:

import os
os.<command>('/dbfs/tmp')
أمثلة
# Default location for %fs is root
%fs ls /tmp/
%fs mkdirs /tmp/my_cloud_dir
%fs cp /tmp/test_dbfs.txt /tmp/file_b.txt
# Default location for dbutils.fs is root
dbutils.fs.ls ("/tmp/")
dbutils.fs.put("/tmp/my_new_file", "This is a file in cloud storage.")
# Default location for %sh is the local filesystem
%sh ls /dbfs/tmp/
# Default location for os commands is the local filesystem
import os
os.listdir('/dbfs/tmp')

الوصول إلى الملفات على نظام الملفات المحلي

%fs وقراءة dbutils.fs افتراضيا من الجذر (dbfs:/). للقراءة من نظام الملفات المحلي، يجب عليك استخدام file:/.

%fs <command> file:/<path>
dbutils.fs.<command> ("file:/<path>/")

%sh يقرأ من نظام الملفات المحلية افتراضيا، لذلك لا تستخدم file:/:

%sh <command> /<path>
أمثلة
# With %fs and dbutils.fs, you must use file:/ to read from local filesystem
%fs ls file:/tmp
%fs mkdirs file:/tmp/my_local_dir
dbutils.fs.ls ("file:/tmp/")
dbutils.fs.put("file:/tmp/my_new_file", "This is a file on the local driver node.")
# %sh reads from the local filesystem by default
%sh ls /tmp

الوصول إلى الملفات على تخزين الكائنات المحملة

يسمح لك تخزين الكائنات المتصاعدة إلى DBFS بالوصول إلى الكائنات في تخزين الكائنات كما لو كانت على نظام الملفات المحلي.

أمثلة
dbutils.fs.ls("/mnt/mymount")
df = spark.read.text("dbfs:/mymount/my_file.txt")

جدول موجز ورسم تخطيطي

يلخص الجدول والرسم التخطيطي ويوضحان الأوامر الموضحة في هذا القسم ومتى يتم استخدام كل بناء جملة.

الأمر الموقع الافتراضي للقراءة من الجذر للقراءة من نظام الملفات المحلي
%fs Root إضافة file:/ إلى المسار
%sh عقدة برنامج التشغيل المحلي إضافة /dbfs إلى المسار
dbutils.fs Root إضافة file:/ إلى المسار
os.<command> عقدة برنامج التشغيل المحلي إضافة /dbfs إلى المسار

File paths diagram

واجهة تحميل الملفات

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

يتم تحميل الملفات إلى دليل FileStore .

Upload البيانات إلى DBFS من مستعرض الملفات

ملاحظة

يتم تعطيل هذه الميزة بشكل افتراضي. يجب على المسؤول تمكين واجهة المستعرض DBFS قبل أن تتمكن من استخدامها. راجع إدارة مستعرض الملفات DBFS.

  1. انقر فوق Data Iconالبيانات في الشريط الجانبي.

  2. انقر فوق الزر DBFS في أعلى الصفحة.

  3. انقر فوق الزر Upload أعلى الصفحة.

  4. في مربع الحوار Upload البيانات إلى DBFS، حدد دليل هدف اختياريا أو أدخل دليلا جديدا.

  5. في المربع الملفات ، اسحب واسقط أو استخدم مستعرض الملفات لتحديد الملف المحلي المراد تحميله.

    Upload to DBFS from the browser

يمكن الوصول إلى الملفات التي تم تحميلها من قبل كل من لديه حق الوصول إلى مساحة العمل.

Upload البيانات إلى DBFS من دفتر ملاحظات

ملاحظة

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

لإنشاء جدول باستخدام واجهة المستخدم، راجع إنشاء جدول باستخدام واجهة المستخدم.

لتحميل البيانات لاستخدامها في دفتر ملاحظات، اتبع الخطوات التالية.

  1. إنشاء دفتر ملاحظات جديد أو فتح دفتر ملاحظات موجود، ثم انقر فوق ملف Upload البيانات

    Upload data

  2. حدد دليل هدف في DBFS لتخزين الملف الذي تم تحميله. الافتراضي الدليل الهدف إلى /shared_uploads/<your-email-address>/.

    يمكن الوصول إلى الملفات التي تم تحميلها من قبل كل من لديه حق الوصول إلى مساحة العمل.

  3. إما سحب الملفات إلى هدف الإفلات أو انقر فوق استعراض لتحديد موقع الملفات في نظام الملفات المحلي.

    Select Files and Destination

  4. عند الانتهاء من تحميل الملفات، انقر فوق التالي.

    إذا قمت بتحميل ملفات CSV أو TSV أو JSON، فإن Azure Databricks يقوم بإنشاء تعليمات برمجية توضح كيفية تحميل البيانات في DataFrame.

    View Files and Sample Code

    لحفظ النص في الحافظة، انقر فوق نسخ.

  5. انقر فوق تم للعودة إلى دفتر الملاحظات.

كريكيت البيانات CLI

واجهة سطر الأوامر DBFS (CLI) يستخدم 2.0 API DBFS لكشف واجهة سطر الأوامر سهلة الاستخدام إلى DBFS. باستخدام هذا العميل، يمكنك التفاعل مع DBFS باستخدام أوامر مشابهة لتلك التي تستخدمها على سطر أوامر Unix. على سبيل المثال:

# List files in DBFS
dbfs ls
# Put local file ./apple.txt to dbfs:/apple.txt
dbfs cp ./apple.txt dbfs:/apple.txt
# Get dbfs:/apple.txt and save to local file ./apple.txt
dbfs cp dbfs:/apple.txt ./apple.txt
# Recursively put local dir ./banana to dbfs:/banana
dbfs cp -r ./banana dbfs:/banana

لمزيد من المعلومات حول واجهة سطر الأوامر DBFS راجع Databricks CLI.

dbutils

dbutils.fs يوفر أوامر تشبه نظام الملفات للوصول إلى الملفات في DBFS. يحتوي هذا القسم على عدة أمثلة حول كيفية كتابة الملفات وقراءة الملفات من DBFS باستخدام dbutils.fs الأوامر.

تلميح

للوصول إلى قائمة التعليمات ل DBFS، استخدم dbutils.fs.help() الأمر.

كتابة الملفات إلى الملفات وقراءتها من جذر DBFS كما لو كانت نظام ملفات محلي

dbutils.fs.mkdirs("/foobar/")
dbutils.fs.put("/foobar/baz.txt", "Hello, World!")
dbutils.fs.head("/foobar/baz.txt")
dbutils.fs.rm("/foobar/baz.txt")

استخدام dbfs:/ للوصول إلى مسار DBFS

display(dbutils.fs.ls("dbfs:/foobar"))

استخدام الأوامر السحرية ٪fs

تدعم دفاتر الملاحظات اختصارا —%fs%fs — للوصول إلى dbutils وحدة نظام الملفات. تتوفر معظم dbutils.fs الأوامر باستخدام %fs الأوامر السحرية.

# List the DBFS root

%fs ls

# Recursively remove the files under foobar

%fs rm -r foobar

# Overwrite the file "/mnt/my-file" with the string "Hello world!"

%fs put -f "/mnt/my-file" "Hello world!"

واجهة برمجة تطبيقات DBFS

راجع DBFS API 2.0Upload ملف كبير في DBFS.

واجهات برمجة التطبيقات للشرارة

عند استخدام واجهات برمجة التطبيقات ل Spark، يمكنك الرجوع إلى الملفات باستخدام "/mnt/training/file.csv" أو "dbfs:/mnt/training/file.csv". المثال التالي يكتب الملف foo.text إلى الدليل DBFS /tmp .

df.write.text("/tmp/foo.txt")

عند استخدام واجهات برمجة التطبيقات Spark للوصول إلى DBFS (على سبيل المثال، عن طريق الاتصال spark.read) ، يجب تحديد المسار الكامل المطلق إلى موقع DBFS الهدف. يجب أن يبدأ المسار من جذر DBFS، ممثلة أو /dbfs:/، والتي هي مكافئة. على سبيل المثال، لقراءة ملف اسمه people.json في موقع /FileStoreDBFS ، يمكنك تحديد أي مما يلي:

df = spark.read.json('dbfs:/FileStore/people.json')
df.show()

أو:

df = spark.read.json('/FileStore/people.json')
df.show()

لا يعمل ما يلي:

# This will not work. The path must be absolute. It
# must start with '/' or 'dbfs:/'.
df = spark.read.json('FileStore/people.json')
df.show()

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

يمكنك استخدام واجهات برمجة التطبيقات للملفات المحلية لقراءة مسارات DBFS والكتابة إليها. تكوين Azure Databricks كل عقدة نظام المجموعة مع تحميل /dbfs FUSE يسمح العمليات التي تعمل على عقد نظام المجموعة القراءة والكتابة إلى طبقة التخزين الموزعة الأساسية مع واجهات برمجة التطبيقات الملف المحلي. عند استخدام واجهات برمجة التطبيقات للملفات المحلية، يجب توفير المسار ضمن /dbfs. على سبيل المثال:

Python

#write a file to DBFS using Python file system APIs
with open("/dbfs/tmp/test_dbfs.txt", 'w') as f:
  f.write("Apache Spark is awesome!\n")
  f.write("End of example!")

# read the file
with open("/dbfs/tmp/test_dbfs.txt", "r") as f_read:
  for line in f_read:
    print(line)

Scala

import scala.io.Source

val filename = "/dbfs/tmp/test_dbfs.txt"
for (line <- Source.fromFile(filename).getLines()) {
  println(line)
}

قيود API للملف المحلي

يسرد التالي القيود في استخدام API الملف المحلي التي تنطبق على كل FUSE وإصدارات Databricks وقت التشغيل المعنية.

  • الكل: لا يعتمد تمرير بيانات الاعتماد.

  • FUSE V2 (الافتراضي Databricks وقت التشغيل 6.x و 7.x)

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

      # 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', '/dbfs/tmp/excel.xlsx')
      
    • لا يعتمد الملفات متفرق. لنسخ الملفات المتفرقة، استخدم cp --sparse=never:

      $ cp sparse.file /dbfs/sparse.file
      error writing '/dbfs/sparse.file': Operation not supported
      $ cp --sparse=never sparse.file /dbfs/sparse.file
      
  • FUSE V1 (الافتراضي ل Databricks وقت التشغيل 5.5 LTS)

    هام

    إذا واجهت مشاكل مع FUSE V1 على <DBR> 5.5 LTS، توصي Databricks باستخدام FUSE V2 بدلا من ذلك. يمكنك تجاوز إصدار FUSE الافتراضي في <DBR> 5.5 LTS بواسطة تعيين <DBR>DBFS_FUSE_VERSION=2 البيئة.

    • يدعم الملفات التي يقل حجمها عن 2 جيجابايت فقط. إذا كنت تستخدم واجهات برمجة التطبيقات لنظام الملفات المحلية لقراءة أو كتابة ملفات أكبر من 2 جيجابايت، فقد ترى ملفات تالفة. بدلا من ذلك، الوصول إلى الملفات أكبر من 2GB باستخدام CLI DBFSdbutils.fs أو واجهات برمجة التطبيقات Spark أو استخدام المجلد الموضح في واجهات برمجة التطبيقات الملف المحلي للتعلم العميق.

    • إذا قمت بكتابة ملف باستخدام واجهات برمجة التطبيقات نظام الملفات المحلية ثم حاول الوصول إليه مباشرة باستخدام DBFS CLIdbutils.fs أو واجهات برمجة التطبيقات Spark قد تواجه ملف بحجم 0 أو محتويات ملف تالفة. وهذا متوقع بسبب عمليات التخزين المؤقت لنظام التشغيل يكتب بشكل افتراضي. لإجبار تلك الكتابات ليتم مسحها إلى التخزين المستمر (في حالتنا DBFS)، استخدم مزامنة استدعاء نظام يونكس القياسية. على سبيل المثال:

      // scala
      import scala.sys.process._
      
      // Write a file using the local file API (over the FUSE mount).
      dbutils.fs.put("file:/dbfs/tmp/test", "test-contents")
      
      // Flush to persistent storage.
      "sync /dbfs/tmp/test" !
      
      // Read the file using "dbfs:/" instead of the FUSE mount.
      dbutils.fs.head("dbfs:/tmp/test")
      
واجهات برمجة التطبيقات للملفات المحلية للتعلم العميق

بالنسبة لتطبيقات التعلم العميق الموزعة، والتي تتطلب وصول DBFS لتحميل البيانات ونقاط التفتيش وتسجيلها، يوفر Databricks Runtime 6.0 وما فوقها تحميلا عالي الأداء تم تحسينه لأحمال العمل التعليمية العميقة.

في Databricks وقت التشغيل 5.5 LTS، /dbfs/ml فقط هو الأمثل. في هذا الإصدار توصي Databricks بحفظ البيانات ضمن /dbfs/ml، والتي تقوم بتعيينها إلى dbfs:/ml.