استخدام تحويلات dbt في مهمة Azure Databricks
يمكنك تشغيل مشاريع dbt Core كمهمة في مهمة Azure Databricks. من خلال تشغيل مشروع dbt Core كمهمة وظيفية، يمكنك الاستفادة من ميزات وظائف Azure Databricks التالية:
- أتمتة مهام dbt وجدولة مهام سير العمل التي تتضمن مهام dbt.
- مراقبة تحويلات dbt الخاصة بك وإرسال إعلامات حول حالة التحويلات.
- قم بتضمين مشروع dbt الخاص بك في سير عمل مع مهام أخرى. على سبيل المثال، يمكن لسير العمل استيعاب البيانات باستخدام "المحمل التلقائي"، وتحويل البيانات باستخدام dbt، وتحليل البيانات باستخدام مهمة دفتر ملاحظات.
- الأرشفة التلقائية للبيانات الاصطناعية من تشغيل المهمة، بما في ذلك السجلات والنتائج والبيانات والتكوين.
لمعرفة المزيد حول dbt Core، راجع وثائق dbt.
سير عمل التطوير والإنتاج
توصي Databricks بتطوير مشاريع dbt مقابل مستودع Databricks SQL. باستخدام مستودع Databricks SQL، يمكنك اختبار SQL الذي تم إنشاؤه بواسطة dbt واستخدام محفوظات استعلام مستودع SQL لتصحيح الاستعلامات التي تم إنشاؤها بواسطة dbt.
لتشغيل تحويلات dbt في الإنتاج، توصي Databricks باستخدام مهمة dbt في مهمة Databricks. بشكل افتراضي، ستقوم مهمة dbt بتشغيل عملية dbt Python باستخدام حساب Azure Databricks وSQL الذي تم إنشاؤه بواسطة dbt مقابل مستودع SQL المحدد.
يمكنك تشغيل تحويلات dbt على مستودع SQL بلا خادم أو مستودع SQL pro أو حساب Azure Databricks أو أي مستودع آخر مدعوم من dbt. تتناول هذه المقالة الخيارين الأولين مع أمثلة.
إذا كانت مساحة العمل الخاصة بك ممكنة كتالوج Unity وتم تمكين المهام بلا خادم، بشكل افتراضي، يتم تشغيل المهمة على حساب بلا خادم.
إشعار
يمكن أن يؤدي تطوير نماذج dbt مقابل مستودع SQL وتشغيلها في الإنتاج على حساب Azure Databricks إلى اختلافات دقيقة في الأداء ودعم لغة SQL. توصي Databricks باستخدام نفس إصدار Databricks Runtime للحوسبة ومستودع SQL.
المتطلبات
لمعرفة كيفية استخدام dbt Core والحزمة
dbt-databricks
لإنشاء وتشغيل مشاريع dbt في بيئة التطوير الخاصة بك، راجع الاتصال ب dbt Core.توصي Databricks بحزمة dbt-databricks ، وليس حزمة dbt-spark. حزمة dbt-databricks هي نسخة من dbt-spark المحسنة ل Databricks.
لاستخدام مشاريع dbt في مهمة Azure Databricks، يجب إعداد تكامل Git لمجلدات Databricks Git. لا يمكنك تشغيل مشروع dbt من DBFS.
يجب أن يكون لديك مستودعات SQL بلا خادم أو موالية ممكنة .
يجب أن يكون لديك استحقاق Databricks SQL.
إنشاء وتشغيل أول مهمة dbt
يستخدم المثال التالي مشروع jaffle_shop ، وهو مثال مشروع يوضح مفاهيم dbt الأساسية. لإنشاء وظيفة تقوم بتشغيل مشروع متجر jaffle، قم بتنفيذ الخطوات التالية.
انتقل إلى الصفحة المقصودة ل Azure Databricks وقم بأحد الإجراءات التالية:
- انقر فوق مهام سير العمل في الشريط الجانبي وانقر فوق .
- في الشريط الجانبي، انقر فوق جديد وحدد مهمة.
في مربع نص المهمة على علامة التبويب المهام ، استبدل إضافة اسم لمهمتك... باسم وظيفتك.
في اسم المهمة، أدخل اسما للمهمة.
في النوع، حدد نوع مهمة dbt .
في القائمة المنسدلة Source، يمكنك تحديد Workspace لاستخدام مشروع dbt الموجود في مجلد مساحة عمل Azure Databricks أو موفر Git لمشروع موجود في مستودع Git بعيد. نظرا لأن هذا المثال يستخدم مشروع متجر jaffle الموجود في مستودع Git، حدد موفر Git، وانقر فوق Edit، وأدخل تفاصيل مستودع GitHub لمتجر jaffle.
- في عنوان URL لمستودع Git، أدخل عنوان URL لمشروع متجر jaffle.
- في مرجع Git (الفرع / العلامة / الالتزام)، أدخل
main
. يمكنك أيضا استخدام علامة أو SHA.
انقر فوق تأكيد.
في مربعات نص أوامر dbt، حدد أوامر dbt للتشغيل (deps، والبذاءة، والتشغيل). يجب عليك بادئة كل أمر ب
dbt
. يتم تشغيل الأوامر بالترتيب المحدد.في مستودع SQL، حدد مستودع SQL لتشغيل SQL الذي تم إنشاؤه بواسطة dbt. تعرض القائمة المنسدلة لمستودع SQL مستودعات SQL بلا خادم ومحترفة فقط.
(اختياري) يمكنك تحديد مخطط لإخراج المهمة. بشكل افتراضي، يتم استخدام المخطط
default
.(اختياري) إذا كنت ترغب في تغيير تكوين الحساب الذي يقوم بتشغيل dbt Core، فانقر فوق حساب dbt CLI.
(اختياري) يمكنك تحديد إصدار dbt-databricks للمهمة. على سبيل المثال، لتثبيت مهمة dbt الخاصة بك إلى إصدار معين للتطوير والإنتاج:
- ضمن المكتبات التابعة، انقر إلى جانب إصدار dbt-databricks الحالي.
- انقر فوق إضافة.
- في مربع الحوار إضافة مكتبة تابعة، حدد PyPI وأدخل إصدار حزمة dbt في مربع نص الحزمة (على سبيل المثال،
dbt-databricks==1.6.0
). - انقر فوق إضافة.
إشعار
توصي Databricks بتثبيت مهام dbt الخاصة بك إلى إصدار معين من حزمة dbt-databricks لضمان استخدام نفس الإصدار للتطوير وتشغيل الإنتاج. توصي Databricks بالإصدار 1.6.0 أو أحدث من حزمة dbt-databricks.
انقر فوق Create.
لتشغيل المهمة الآن، انقر فوق .
عرض نتائج مهمة dbt المهمة
عند اكتمال المهمة، يمكنك اختبار النتائج عن طريق تشغيل استعلامات SQL من دفتر ملاحظات أو عن طريق تشغيل الاستعلامات في مستودع Databricks. على سبيل المثال، راجع نماذج الاستعلامات التالية:
SHOW tables IN <schema>;
SELECT * from <schema>.customers LIMIT 10;
استبدل <schema>
باسم المخطط الذي تم تكوينه في تكوين المهمة.
مثال على واجهة برمجة التطبيقات
يمكنك أيضا استخدام واجهة برمجة تطبيقات الوظائف لإنشاء وإدارة المهام التي تتضمن مهام dbt. ينشئ المثال التالي مهمة بمهمة dbt واحدة:
{
"name": "jaffle_shop dbt job",
"max_concurrent_runs": 1,
"git_source": {
"git_url": "https://github.com/dbt-labs/jaffle_shop",
"git_provider": "gitHub",
"git_branch": "main"
},
"job_clusters": [
{
"job_cluster_key": "dbt_CLI",
"new_cluster": {
"spark_version": "10.4.x-photon-scala2.12",
"node_type_id": "Standard_DS3_v2",
"num_workers": 0,
"spark_conf": {
"spark.master": "local[*, 4]",
"spark.databricks.cluster.profile": "singleNode"
},
"custom_tags": {
"ResourceClass": "SingleNode"
}
}
}
],
"tasks": [
{
"task_key": "transform",
"job_cluster_key": "dbt_CLI",
"dbt_task": {
"commands": [
"dbt deps",
"dbt seed",
"dbt run"
],
"warehouse_id": "1a234b567c8de912"
},
"libraries": [
{
"pypi": {
"package": "dbt-databricks>=1.0.0,<2.0.0"
}
}
]
}
]
}
(متقدم) تشغيل dbt مع ملف تعريف مخصص
لتشغيل مهمة dbt باستخدام مستودع SQL (مستحسن) أو حساب لجميع الأغراض، استخدم مخصصا profiles.yml
لتعريف المستودع أو حساب Azure Databricks للاتصال به. لإنشاء وظيفة تقوم بتشغيل مشروع متجر jaffle باستخدام مستودع أو حساب لجميع الأغراض، قم بتنفيذ الخطوات التالية.
إشعار
يمكن استخدام مستودع SQL أو حساب متعدد الأغراض فقط كهدف لمهمة dbt. لا يمكنك استخدام حساب الوظيفة كهدف ل dbt.
استنساخ المستودع المتشعب إلى سطح المكتب الخاص بك. على سبيل المثال، يمكنك تشغيل أمر كما يلي:
git clone https://github.com/<username>/jaffle_shop.git
استبدل
<username>
بمقبض GitHub الخاص بك.إنشاء ملف جديد يسمى
profiles.yml
فيjaffle_shop
الدليل بالمحتوى التالي:jaffle_shop: target: databricks_job outputs: databricks_job: type: databricks method: http schema: "<schema>" host: "<http-host>" http_path: "<http-path>" token: "{{ env_var('DBT_ACCESS_TOKEN') }}"
- استبدل
<schema>
باسم مخطط لجداول المشروع. - لتشغيل مهمة dbt بمستودع SQL، استبدل
<http-host>
بقيمة Server Hostname من علامة التبويب Connection Details لمستودع SQL الخاص بك. لتشغيل مهمة dbt الخاصة بك مع حساب لجميع الأغراض، استبدل<http-host>
بقيمة Server Hostname من علامة التبويب خيارات متقدمة، JDBC/ODBC لحساب Azure Databricks. - لتشغيل مهمة dbt بمستودع SQL، استبدل
<http-path>
بقيمة مسار HTTP من علامة التبويب تفاصيل الاتصال لمستودع SQL الخاص بك. لتشغيل مهمة dbt الخاصة بك مع حساب لجميع الأغراض، استبدل<http-path>
بقيمة مسار HTTP من علامة التبويب خيارات متقدمة، JDBC/ODBC لحساب Azure Databricks.
لا تحدد أسرارا، مثل رموز الوصول المميزة، في الملف لأنك ستتحقق من هذا الملف في التحكم بالمصادر. بدلا من ذلك، يستخدم هذا الملف وظيفة dbt templating لإدراج بيانات الاعتماد ديناميكيا في وقت التشغيل.
إشعار
بيانات الاعتماد التي تم إنشاؤها صالحة لمدة التشغيل، بحد أقصى 30 يوما، ويتم إبطالها تلقائيا بعد الانتهاء.
- استبدل
تحقق من هذا الملف في Git وادفعه إلى المستودع المتشعب. على سبيل المثال، يمكنك تشغيل أوامر مثل ما يلي:
git add profiles.yml git commit -m "adding profiles.yml for my Databricks job" git push
انقر فوق مهام سير العمل في الشريط الجانبي لواجهة مستخدم Databricks.
حدد مهمة dbt وانقر فوق علامة التبويب المهام .
في المصدر، انقر فوق تحرير وأدخل تفاصيل مستودع GitHub لمتجر JitHub المتشعب.
في مستودع SQL، حدد بلا (يدوي).
في "Profiles Directory"، أدخل المسار النسبي إلى الدليل الذي يحتوي على
profiles.yml
الملف. اترك قيمة المسار فارغة لاستخدام الإعداد الافتراضي لجذر المستودع.
(متقدم) استخدام نماذج dbt Python في سير عمل
إشعار
دعم dbt لنماذج Python في بيتا ويتطلب dbt 1.3 أو أحدث.
يدعم dbt الآن نماذج Python على مستودعات بيانات محددة، بما في ذلك Databricks. باستخدام نماذج dbt Python، يمكنك استخدام أدوات من نظام Python البنائي لتنفيذ التحويلات التي يصعب تنفيذها باستخدام SQL. يمكنك إنشاء مهمة Azure Databricks لتشغيل مهمة واحدة باستخدام نموذج dbt Python، أو يمكنك تضمين مهمة dbt كجزء من سير عمل يتضمن مهاما متعددة.
لا يمكنك تشغيل نماذج Python في مهمة dbt باستخدام مستودع SQL. لمزيد من المعلومات حول استخدام نماذج dbt Python مع Azure Databricks، راجع مستودعات بيانات محددة في وثائق dbt.
الأخطاء واستكشاف الأخطاء وإصلاحها
خطأ ملف التعريف غير موجود
رسالة الخطأ:
dbt looked for a profiles.yml file in /tmp/.../profiles.yml but did not find one.
الأسباب المحتملة:
profiles.yml
لم يتم العثور على الملف في $PATH المحدد. تأكد من أن جذر مشروع dbt يحتوي على ملف profiles.yml.