FileStore

FileStore هو مجلد خاص داخل DBFS حيث يمكنك حفظ الملفات وجعلها قابلة للوصول إلى مستعرض الويب الخاص بك. يمكنك استخدام FileStore من أجل:

  • احفظ الملفات، مثل الصور والمكتبات، التي يمكن الوصول إليها داخل HTML وJavaScript عند الاتصال displayHTML.
  • احفظ ملفات الإخراج التي تريد تنزيلها إلى سطح المكتب المحلي.
  • قم بتحميل ملفات CSV وملفات البيانات الأخرى من سطح المكتب المحلي للمعالجة على Databricks.

عند استخدام ميزات معينة، يضع Azure Databricks الملفات في المجلدات التالية ضمن FileStore:

  • /FileStore/jars - يحتوي على مكتبات مساحة العمل القديمة التي تم تحميلها. إذا قمت بحذف الملفات الموجودة في هذا المجلد، فقد لا تعمل المكتبات التي تشير إلى هذه الملفات في مساحة العمل.
  • /FileStore/tables - يحتوي على الملفات التي تقوم باستيرادها باستخدام واجهة المستخدم. إذا قمت بحذف الملفات الموجودة في هذا المجلد، فقد لا يعود من الممكن الوصول إلى الجداول التي قمت بإنشائها من هذه الملفات.

هام

يمكن تثبيت المكتبات من DBFS عند استخدام Databricks Runtime 14.3 LTS وما دونه. ومع ذلك، يمكن لأي مستخدم مساحة عمل تعديل ملفات المكتبة المخزنة في DBFS. لتحسين أمان المكتبات في مساحة عمل Azure Databricks، يتم إهمال تخزين ملفات المكتبات في جذر DBFS وتعطيلها بشكل افتراضي في Databricks Runtime 15.0 وما فوق. راجع إهمال وتعطيل تخزين المكتبات في جذر DBFS بشكل افتراضي.

بدلا من ذلك، توصي Databricks بتحميل جميع المكتبات، بما في ذلك مكتبات Python وملفات JAR وموصلات Spark، إلى ملفات مساحة العمل أو وحدات تخزين كتالوج Unity، أو استخدام مستودعات حزم المكتبات. إذا كان حمل العمل الخاص بك لا يدعم هذه الأنماط، يمكنك أيضا استخدام المكتبات المخزنة في تخزين الكائنات السحابية.

حفظ ملف إلى FileStore

يمكنك استخدام dbutils.fs.put لكتابة ملفات نصية عشوائية /FileStore إلى الدليل في DBFS:

dbutils.fs.put("/FileStore/my-stuff/my-file.txt", "This is the actual text that will be saved to disk. Like a 'Hello world!' example")

في ما يلي، استبدل <databricks-instance> بعنوان URL لمساحة العمل لنشر Azure Databricks.

يمكن الوصول إلى الملفات المخزنة في /FileStore مستعرض الويب الخاص بك على https://<databricks-instance>/files/<path-to-file>?o=######. على سبيل المثال، يمكن الوصول إلى الملف الذي قمت بتخزينه في /FileStore/my-stuff/my-file.txthttps://<databricks-instance>/files/my-stuff/my-file.txt?o=###### حيث يكون الرقم بعد o= هو نفسه كما هو الحال في عنوان URL الخاص بك.

إشعار

يمكنك أيضا استخدام واجهات تحميل ملف DBFS لوضع الملفات في /FileStore الدليل. راجع استكشاف الجداول وإنشائها في DBFS.

تضمين صور ثابتة في دفاتر الملاحظات

يمكنك استخدام الموقع لتضمين files/ صور ثابتة في دفاتر الملاحظات:

displayHTML("<img src ='files/image.jpg'>")

أو بناء جملة استيراد صورة Markdown:

%md
![my_test_image](files/image.jpg)

يمكنك تحميل صور ثابتة باستخدام واجهة برمجة تطبيقات DBFS ومكتبة HTTP Python للطلبات . في المثال التالي، يرجى اتباع الخطوات التالية:

  • استبدل <databricks-instance> بعنوان URL لمساحة العمل لنشر Azure Databricks.
  • استبدل <token> بقيمة الرمز المميز للوصول الشخصي.
  • استبدل <image-dir> بالموقع حيث FileStore تريد تحميل ملفات الصور.

إشعار

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

import requests
import json
import os

TOKEN = '<token>'
headers = {'Authorization': 'Bearer %s' % TOKEN}
url = "https://<databricks-instance>/api/2.0"
dbfs_dir = "dbfs:/FileStore/<image-dir>/"

def perform_query(path, headers, data={}):
  session = requests.Session()
  resp = session.request('POST', url + path, data=json.dumps(data), verify=True, headers=headers)
  return resp.json()

def mkdirs(path, headers):
  _data = {}
  _data['path'] = path
  return perform_query('/dbfs/mkdirs', headers=headers, data=_data)

def create(path, overwrite, headers):
  _data = {}
  _data['path'] = path
  _data['overwrite'] = overwrite
  return perform_query('/dbfs/create', headers=headers, data=_data)

def add_block(handle, data, headers):
  _data = {}
  _data['handle'] = handle
  _data['data'] = data
  return perform_query('/dbfs/add-block', headers=headers, data=_data)

def close(handle, headers):
  _data = {}
  _data['handle'] = handle
  return perform_query('/dbfs/close', headers=headers, data=_data)

def put_file(src_path, dbfs_path, overwrite, headers):
  handle = create(dbfs_path, overwrite, headers=headers)['handle']
  print("Putting file: " + dbfs_path)
  with open(src_path, 'rb') as local_file:
    while True:
      contents = local_file.read(2**20)
      if len(contents) == 0:
        break
      add_block(handle, b64encode(contents).decode(), headers=headers)
    close(handle, headers=headers)

mkdirs(path=dbfs_dir, headers=headers)
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
  if ".png" in f:
    target_path = dbfs_dir + f
    resp = put_file(src_path=f, dbfs_path=target_path, overwrite=True, headers=headers)
    if resp == None:
      print("Success")
    else:
      print(resp)

تغيير حجم الصور الثابتة

لتغيير حجم صورة قمت بحفظها في DBFS، انسخ الصورة إلى /FileStore ثم غير حجمها باستخدام معلمات الصورة في displayHTML:

dbutils.fs.cp('dbfs:/user/experimental/MyImage-1.png','dbfs:/FileStore/images/')
displayHTML('''<img src="files/images/MyImage-1.png" style="width:600px;height:600px;">''')

مثال دفتر الملاحظات: استخدام مكتبة JavaScript

يوضح دفتر الملاحظات هذا كيفية استخدام FileStore لاحتواء مكتبة JavaScript.

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

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