apache-airflow-providers-clickhousedb بين Airflow وClickHouse، مما يتيح لك تشغيل الاستعلامات وإنشاء الجداول وتحميل البيانات كجزء من DAG. ويتصل عبر واجهة HTTP باستخدام عميل clickhouse-connect، كما يوفّر ClickHouse من خلال إطار SQL الشائع في Airflow، بحيث يتولى SQLExecuteQueryOperator القياسي تنفيذ استعلامات DDL وDML والاستعلامات التحليلية من دون الحاجة إلى مشغّل خاص بـ ClickHouse.
هل تستخدم بالفعل
airflow-clickhouse-plugin المجتمعي؟ إنه يستخدم driver وprotocol ومنفذًا مختلفين. اتبع
دليل الترحيل لنقل DAGs والاتصالات الحالية إلى الموفّر.ثبّت الموفّر
ثبّت الموفّر في البيئة التي يعمل فيها مجدول Airflow والعمّال لديك:apache-airflow-providers-common-sql وclickhouse-connect، ويُثبَّتان معه. لتمرير نتائج الاستعلام إلى كائنات DataFrame في pandas أو polars، ثبّت الإضافات الاختيارية التالية:
إنشاء اتصال ClickHouse
يسجّل الموفّر نوع اتصال باسمclickhouse. أنشئ اتصالًا من واجهة Airflow ضمن Admin > Connections، أو عرّفه عبر CLI أو من خلال متغير بيئة.
في واجهة المستخدم، اختر ClickHouse كنوع الاتصال واملأ الحقول التالية:
بالنسبة إلى ClickHouse Cloud أو أي عنقود مستضاف ذاتيًا مع تمكين TLS، اضبط
secure على true في حقل Extra واستخدم منفذ TLS (8443).
خيارات الاتصال الإضافية
يوفّر الموفّر خيارات إضافية كحقول مخصّصة في نموذج الاتصال. وإذا عرّفت الاتصال باستخدام URI أو JSON أو متغيّر بيئة بدلًا من ذلك، فأرسلها كمفاتيح ضمن كائن JSON extra. جميعها اختيارية:
حدِّد اتصالًا من دون واجهة المستخدم
اضبط الاتصال عبر متغيّر بيئة. ويشمل تنسيق URI كلًا من المضيف وبيانات الاعتماد وقاعدة البيانات:clickhouse_default ما لم تحدد معرّفًا آخر.
تشغيل الاستعلامات باستخدام SQLExecuteQueryOperator
اضبط قيمةconn_id للمشغّل بحيث تشير إلى اتصال ClickHouse لديك. ينشئ DAG التالي جدولًا، ويدرج صفوفًا، ثم يقرؤها مرة أخرى، ثم يحذف الجدول:
handler الافتراضي (fetch_all_handler). ولإرجاع شيء آخر غير مجموعة النتائج الكاملة، مرِّر معالجًا مختلفًا، مثل fetch_one_handler لإرجاع الصف الأول فقط.
استهدف قاعدة بيانات مختلفة لكل مهمة
عندما يكون اتصال واحد موجّهًا إلى عنقود وتنفّذ المهام الفردية استعلامات على قواعد بيانات مختلفة، فعيّن قاعدة البيانات عبرhook_params بدلًا من إنشاء اتصال منفصل:
استخدم الخطاف مباشرة
بالنسبة إلى الأعمال التي لا تناسب مُعامل SQL — مثل الإدراجات المجمّعة، أو التدفق، أو استدعاءات العميل الخاصة بـ ClickHouse — استخدمClickHouseHook داخل مهمة في بايثون.
تستخدم الطريقة bulk_insert_rows الخاصة بالخطاف مسار الإدراج العمودي الأصلي في clickhouse-connect، وهو أسرع بكثير من الإدراج صفًا بصف عند التعامل مع مجموعات بيانات كبيرة. اضبط batch_size للحد من ذروة الذاكرة عند التعامل مع مدخلات كبيرة جدًا:
get_client() للوصول إلى عميل clickhouse-connect الداخلي لأي شيء لا يتيحه الخطاف مباشرةً:
تطبيق إعدادات الجلسة
مرِّر إعدادات الجلسة عند إنشاء الـ خطاف، إما مباشرةً أو عبرhook_params الخاص بالمشغّل. وتُدمَج الإعدادات المُمرَّرة إلى المُنشئ مع أي session_settings مُعرَّفة في حقل Extra الخاص بالاتصال، وتكون لقيم المُنشئ الأولوية عند تعارض المفاتيح: