العمل مع وحدات Python وR
توضح هذه المقالة كيفية استخدام المسارات النسبية لاستيراد وحدات Python وR المخصصة المخزنة في ملفات مساحة العمل إلى جانب دفاتر ملاحظات Databricks. يمكن أن تسهل ملفات مساحة العمل دورات حياة تطوير أكثر إحكاما، مما يسمح لك بنمذجة التعليمات البرمجية الخاصة بك، وتحويل ٪run commands إلى عبارات الاستيراد، وإعادة بناء التعليمات البرمجية لملفات عجلة Python إلى وحدات ذات إصدارات مشاركة. يمكنك أيضا استخدام محطة ويب Databricks المضمنة لاختبار التعليمات البرمجية الخاصة بك.
إشعار
في Databricks Runtime 14.0 والإصدارات الأحدث، الدليل الافتراضي للعمل الحالي (CWD) للتعليمات البرمجية المنفذة محليا هو الدليل الذي يحتوي على دفتر الملاحظات أو البرنامج النصي قيد التشغيل. هذا تغيير في السلوك من Databricks Runtime 13.3 LTS وما يلي. راجع ما هو دليل العمل الحالي الافتراضي؟.
استيراد وحدات Python وR
هام
في Databricks Runtime 13.3 LTS وما فوق، يتم توزيع الدلائل المضافة إلى Python sys.path
أو الدلائل التي تم تنظيمها كحزم Python تلقائيا على جميع المنفذين في نظام المجموعة. في Databricks Runtime 12.2 LTS والإدناه، يجب تثبيت المكتبات المضافة إلى sys.path
بشكل صريح على المنفذين.
في Databricks Runtime 11.3 LTS وما فوق، تتم إضافة دليل العمل الحالي لدفتر الملاحظات تلقائيا إلى مسار Python. إذا كنت تستخدم مجلدات Git، تتم إضافة دليل المستودع الجذر.
لاستيراد الوحدات النمطية من دليل آخر، يجب إضافة الدليل الذي يحتوي على الوحدة النمطية إلى sys.path
. يمكنك تحديد الدلائل باستخدام مسار نسبي، كما في المثال التالي:
import sys
import os
sys.path.append(os.path.abspath('..'))
يمكنك استيراد الدالات من وحدة نمطية مخزنة في ملفات مساحة العمل تماما كما تفعل من وحدة نمطية محفوظة كمكتبة نظام مجموعة أو مكتبة ذات نطاق دفتر ملاحظات:
Python
from sample import power
power.powerOfTwo(3)
R
source("sample.R")
power.powerOfTwo(3)
هام
عند استخدام عبارة import
ومكتبات متعددة بنفس الاسم موجودة، يستخدم Databricks قواعد الأسبقية لتحديد المكتبة التي يجب تحميلها. راجع أسبقية مكتبة Python.
التحميل التلقائي لوحدات Python النمطية
إذا كنت تقوم بتحرير ملفات متعددة أثناء تطوير التعليمات البرمجية ل Python، يمكنك تمكين autoreload
الملحق لإعادة تحميل أي وحدات نمطية مستوردة تلقائيا بحيث يقوم الأمر بتشغيل التقاط هذه التعديلات. استخدم الأوامر التالية في أي خلية دفتر ملاحظات أو ملف Python لتمكين الملحق autoreload
:
%load_ext autoreload
%autoreload 2
autoreload
يعمل الملحق فقط في عملية برنامج تشغيل Spark ولا يعيد تحميل التعليمات البرمجية في عمليات منفذ Spark. لأنه يعمل فقط على عقدة برنامج تشغيل Spark وليس العقد التي تشغل منفذ Spark، يجب عدم استخدام autoreload
عند تطوير الوحدات النمطية التي تعمل على العقد العاملة (على سبيل المثال، UDFs).
في Databricks Runtime 16.0 والإصدارات الأحدث، autoreload
يضيف الملحق في Databricks الميزات التالية:
- دعم إعادة التحميل المستهدفة للوحدات النمطية للتعديلات الداخلية على الوظائف. يضمن إعادة تحميل الجزء الذي تم تغييره فقط من الوحدة كلما أمكن ذلك وجود مثيل مرئي خارجي واحد فقط لكل كائن، وهو أكثر أمانا وموثوقية.
- عند استيراد وحدة Python النمطية من ملف مساحة عمل، يقترح Databricks تلقائيا استخدام
autoreload
ما إذا كانت الوحدة النمطية قد تغيرت منذ استيرادها الأخير.
لمعرفة المزيد حول الملحق autoreload
، راجع وثائق التحميل التلقائي ل IPython.
إعادة بناء التعليمات البرمجية
أفضل ممارسة لتطوير التعليمات البرمجية هي تعديل التعليمات البرمجية بحيث يمكن إعادة استخدامها بسهولة. يمكنك إنشاء ملفات Python مخصصة مع ملفات مساحة العمل وجعل التعليمات البرمجية في تلك الملفات متاحة لدفتر ملاحظات باستخدام العبارة import
.
لإعادة بناء التعليمات البرمجية لدفتر الملاحظات في ملفات قابلة لإعادة الاستخدام:
- إنشاء ملف تعليمة برمجية مصدر جديد للتعليمات البرمجية الخاصة بك.
- أضف عبارات استيراد Python إلى دفتر الملاحظات لجعل التعليمات البرمجية في الملف الجديد متاحة لدفتر الملاحظات.
الترحيل من %run
الأوامر
إذا كنت تستخدم %run
أوامر لجعل وظائف Python أو R المعرفة في دفتر ملاحظات متاحة لدفتر ملاحظات آخر، أو تقوم بتثبيت ملفات مخصصة .whl
على نظام مجموعة، ففكر في تضمين هذه الوحدات النمطية المخصصة كملفات مساحة عمل. بهذه الطريقة، يمكنك الاحتفاظ بدفاتر الملاحظات ووحدات التعليمات البرمجية الأخرى متزامنة، مما يضمن أن دفتر الملاحظات يستخدم دائما الإصدار الصحيح.
%run
تسمح لك الأوامر بتضمين دفتر ملاحظات في دفتر ملاحظات آخر وغالبا ما تستخدم لجعل التعليمات البرمجية ل Python أو R الداعمة متوفرة لدفتر ملاحظات. في هذا المثال، يتضمن دفتر الملاحظات المسمى power.py
التعليمات البرمجية أدناه.
# This code is in a notebook named "power.py".
def n_to_mth(n,m):
print(n, "to the", m, "th power is", n**m)
يمكنك بعد ذلك جعل الوظائف المعرفة في power.py
متوفرة لدفتر ملاحظات مختلف باستخدام أمر %run
:
# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)
باستخدام ملفات مساحة العمل، يمكنك استيراد الوحدة النمطية التي تحتوي على التعليمات البرمجية ل Python مباشرة وتشغيل الدالة .
from power import n_to_mth
n_to_mth(3, 4)
إعادة بناء التعليمات البرمجية لملفات Python .whl
إلى مكتبات نسبية
يمكنك تثبيت ملفات مخصصة .whl
على نظام مجموعة ثم استيرادها إلى دفتر ملاحظات مرفق بتلك المجموعة. ومع ذلك، قد تكون هذه العملية مرهقة وعرضة للخطأ للتعليمات البرمجية المحدثة بشكل متكرر. تتيح لك ملفات مساحة العمل الاحتفاظ بملفات Python هذه في نفس الدليل مثل دفاتر الملاحظات التي تستخدم التعليمات البرمجية، مما يضمن أن دفتر الملاحظات يستخدم دائما الإصدار الصحيح.
لمزيد من المعلومات حول تعبئة مشاريع Python، راجع هذا البرنامج التعليمي.
استخدام محطة ويب Azure Databricks للاختبار
يمكنك استخدام محطة ويب Azure Databricks لاختبار التعديلات على التعليمات البرمجية Python أو R دون استخدام دفتر ملاحظات لاستيراد الملف وتشغيله.
- افتح محطة الويب الطرفية.
- قم بالتغيير إلى الدليل:
cd /Workspace/Users/<path-to-directory>/
. - قم بتشغيل ملف Python أو R:
python file_name.py
أوRscript file_name.r
.