استخدام قيم المهام لتمرير المعلومات بين المهام

تشير قيم المهام إلى عبث أدوات taskValues Databricks المساعدة، والذي يتيح لك تمرير قيم عشوائية بين المهام في مهمة Databricks. راجع تماثل taskValues (dbutils.jobs.taskValues).

يمكنك تحديد زوج قيم المفاتيح باستخدام dbutils.jobs.taskValues.set() في مهمة واحدة ثم يمكنك استخدام اسم المهمة والمفتاح للإشارة إلى القيمة في المهام اللاحقة.

إشعار

تتوفر التبعيات dbutils.jobs.taskValues.set() و dbutils.jobs.taskValues.get() فقط في دفاتر ملاحظات Python. يمكنك الرجوع إلى قيم المهام باستخدام مراجع القيمة الديناميكية لكافة المهام التي تدعم المعلمات. راجع قيم المهام المرجعية.

تعيين قيم المهام

تعيين قيم المهام في دفاتر ملاحظات Python باستخدام ميزة dbutils.jobs.taskValues.set()استبدال .

يجب أن تكون مفاتيح قيمة المهمة سلاسل. يجب أن يكون كل مفتاح فريدا إذا كان لديك قيم مهام متعددة معرفة في دفتر ملاحظات.

يمكنك تعيين قيم المهام يدويا أو برمجيا للمفاتيح. يسمح فقط بالقيم التي يمكن التعبير عنها على أنها JSON صالحة. لا يمكن أن يتجاوز حجم تمثيل JSON للقيمة 48 KiB.

على سبيل المثال، يعين المثال التالي سلسلة ثابتة للمفتاح fave_food:

dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")

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

from pyspark.sql.functions import col

order_num = dbutils.widgets.get("order_num")

query = (spark.read.table("orders")
  .orderBy(col("updated"), ascending=False)
  .select(col("order_status"))
  .where(col("order_num") == order_num)
)

dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "order_status", value = query.take(1)[0][0])

يمكنك تمرير قوائم القيم باستخدام هذا النمط ثم استخدامها لتنسيق منطق انتقال البيانات من الخادم، مثل لكل مهام. راجع تشغيل مهمة مهمة Azure Databricks ذات معلمات في حلقة.

يستخرج المثال التالي القيم المميزة لمعرف المنتج إلى قائمة Python ويعين هذا كقيمة مهمة:

prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])

dbutils.jobs.taskValues.set(key = "prod_list", value = prod_list)

قيم المهام المرجعية

توصي Databricks بالإشارة إلى قيم المهام كمعلمات مهمة تم تكوينها باستخدام نمط {{tasks.<task_name>.values.<value_name>}}مرجع القيمة الديناميكية .

على سبيل المثال، للإشارة إلى قيمة المهمة بالمفتاح prod_list من مهمة تسمى product_inventory، استخدم بناء الجملة {{tasks.product_inventory.values.prod_list}}.

راجع تكوين معلمات المهمة وما هو مرجع القيمة الديناميكية؟

استخدام dbutils.jobs.taskValues.get

يتطلب بناء الجملة dbutils.jobs.taskValues.get() تحديد اسم المهمة المصدر. لا ينصح ببناء الجملة هذا، حيث يمكنك استخدام قيم المهام في مهام انتقال البيانات من الخادم المتعددة، ما يعني أن هناك العديد من التحديثات الضرورية إذا تغير اسم المهمة.

باستخدام بناء الجملة هذا، يمكنك اختياريا تحديد default قيمة و debugValue. يتم استخدام القيمة الافتراضية إذا تعذر العثور على المفتاح. debugValue يسمح لك بتعيين قيمة ثابتة لاستخدامها أثناء تطوير التعليمات البرمجية يدويا واختبارها في دفاتر الملاحظات قبل جدولة دفتر الملاحظات كمهمة.

يحصل المثال التالي على قيمة مجموعة المفاتيح order_status في اسم order_lookupمهمة . يتم إرجاع القيمة Delivered فقط عند تشغيل دفتر الملاحظات بشكل تفاعلي.

order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")

إشعار

لا توصي Databricks بتعيين القيم الافتراضية، حيث قد يكون من الصعب استكشاف أخطاء رسائل الخطأ المتوقعة ومنعها بسبب فقدان المفاتيح أو المهام المسماة بشكل غير صحيح.

عرض قيم المهام

يتم عرض القيمة التي تم إرجاعها لقيمة مهمة لكل تشغيل في لوحة الإخراج لتفاصيل تشغيل المهمة. راجع عرض محفوظات تشغيل المهمة.