Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

ربط Apache NiFi بـ ClickHouse

تتم صيانته من قِبل المجتمع

Apache NiFi هو برنامج مفتوح المصدر لإدارة سير العمل، صُمم لأتمتة تدفق البيانات بين الأنظمة البرمجية. ويتيح إنشاء مسارات بيانات ETL، ويأتي مزودًا بأكثر من 300 معالج بيانات. يوضح هذا الدليل العملي خطوة بخطوة كيفية توصيل Apache NiFi بـ ClickHouse كمصدر ووجهة، وكيفية تحميل مجموعة بيانات تجريبية.

جهّز تفاصيل الاتصال الخاصة بك

للاتصال بـ ClickHouse باستخدام HTTP(S)، تحتاج إلى المعلومات التالية:

المعلمات الوصف
HOST and PORT عادةً ما يكون المنفذ 8443 عند استخدام TLS، أو 8123 عند عدم استخدام TLS.
DATABASE NAME افتراضيًا، توجد قاعدة بيانات باسم default. استخدم اسم قاعدة البيانات التي تريد الاتصال بها.
USERNAME and PASSWORD افتراضيًا، يكون اسم المستخدم default. استخدم اسم المستخدم المناسب لحالة الاستخدام لديك.

تتوفر تفاصيل خدمة ClickHouse Cloud الخاصة بك في ClickHouse Cloud console. حدِّد خدمة ثم انقر على Connect:

زر Connect لخدمة ClickHouse Cloud

اختر HTTPS. ستظهر تفاصيل الاتصال في مثال لأمر curl.

تفاصيل اتصال HTTPS لخدمة ClickHouse Cloud

إذا كنت تستخدم ClickHouse مُدارًا ذاتيًا، فسيُحدِّد مسؤول ClickHouse لديك تفاصيل الاتصال.

نزِّل Apache NiFi وشغِّله

لإعداد جديد، نزِّل الملف التنفيذي من https://nifi.apache.org/download.html ثم ابدأ بتشغيل ./bin/nifi.sh start

تنزيل برنامج تشغيل ClickHouse JDBC

  1. انتقل إلى صفحة إصدارات برنامج تشغيل ClickHouse JDBC على GitHub وابحث عن أحدث إصدار من JDBC
  2. ضمن هذا الإصدار، انقر على "Show all xx assets" ثم ابحث عن ملف JAR الذي يحتوي على الكلمة المفتاحية "shaded" أو "all"، مثل clickhouse-jdbc-0.5.0-all.jar
  3. ضع ملف JAR في مجلد يمكن لـ Apache NiFi الوصول إليه، ودوّن المسار المطلق

[object Object]

  1. لتهيئة خدمة وحدة تحكم في Apache NiFi، انتقل إلى صفحة تهيئة تدفق NiFi بالنقر على زر "الترس"

    صفحة تهيئة تدفق NiFi مع تمييز زر الترس
  2. حدِّد علامة تبويب خدمات وحدة التحكم، ثم أضِف خدمة وحدة تحكم جديدة بالنقر على زر + في أعلى اليمين

    علامة تبويب خدمات وحدة التحكم مع تمييز زر الإضافة
  3. ابحث عن DBCPConnectionPool وانقر على زر "إضافة"

    مربع حوار اختيار خدمة وحدة التحكم مع تمييز DBCPConnectionPool
  4. ستكون DBCPConnectionPool المضافة حديثًا في حالة غير صالحة افتراضيًا. انقر على زر "الترس" لبدء التهيئة

    قائمة خدمات وحدة التحكم تعرض DBCPConnectionPool غير صالحة مع تمييز زر الترس
  5. ضمن قسم "الخصائص"، أدخل القيم التالية

الخاصية القيمة ملاحظة
URL اتصال قاعدة البيانات jdbchttps://HOSTNAME:8443/default?ssl=truetrue استبدل HOSTNAME في URL الاتصال بما يناسب
اسم فئة مشغّل قاعدة البيانات com.clickhouse.jdbc.ClickHouseDriver
مواقع مشغّل قاعدة البيانات /etc/nifi/nifi-X.XX.X/lib/clickhouse-jdbc-0.X.X-patchXX-shaded.jar المسار المطلق إلى ملف JAR الخاص بـ ClickHouse JDBC driver
مستخدم قاعدة البيانات default اسم مستخدم ClickHouse
كلمة المرور password كلمة مرور ClickHouse
  1. في قسم الإعدادات، غيِّر اسم خدمة وحدة التحكم إلى "ClickHouse JDBC" لتسهيل الرجوع إليها

    مربع حوار تهيئة DBCPConnectionPool مع تعبئة الخصائص
  2. فعِّل خدمة وحدة التحكم DBCPConnectionPool بالنقر على زر "البرق" ثم زر "تمكين"

    قائمة خدمات وحدة التحكم مع تمييز زر البرق

    مربع حوار تأكيد تمكين خدمة وحدة التحكم
  3. تحقّق من علامة تبويب خدمات وحدة التحكم وتأكد من أن خدمة وحدة التحكم مُمكَّنة

    قائمة خدمات وحدة التحكم تعرض خدمة ClickHouse JDBC مُمكَّنة

[object Object]

  1. أضف المعالج ​​ExecuteSQL، إلى جانب المعالجات المناسبة السابقة واللاحقة

    لوحة NiFi تعرض المعالج ExecuteSQL ضمن سير عمل
  2. ضمن قسم "Properties" في المعالج ​​ExecuteSQL، أدخل القيم التالية

    Property Value Remark
    Database Connection Pooling Service ClickHouse JDBC اختر خدمة وحدة التحكم المُعدّة لـ ClickHouse
    SQL select query SELECT * FROM system.metrics أدخل الاستعلام هنا
  3. ابدأ المعالج ​​ExecuteSQL

    إعدادات المعالج ExecuteSQL بعد تعبئة الخصائص
  4. للتأكد من أن الاستعلام قد تمت معالجته بنجاح، افحص أحد عناصر FlowFile في قائمة انتظار الإخراج

    نافذة قائمة الانتظار تعرض عناصر FlowFile الجاهزة للفحص
  5. بدّل العرض إلى "formatted" لعرض نتيجة FlowFile الناتج

    عارض محتوى FlowFile يعرض نتائج الاستعلام في العرض المنسّق

[object Object]

  1. لكتابة عدة صفوف في عملية insert واحدة، نحتاج أولاً إلى دمج عدة سجلات في سجل واحد. يمكن تنفيذ ذلك باستخدام المعالج MergeRecord

  2. ضمن قسم "الخصائص" في المعالج MergeRecord، أدخل القيم التالية

    الخاصية القيمة ملاحظة
    قارئ السجل JSONTreeReader اختر قارئ السجلات المناسب
    كاتب السجل JSONReadSetWriter اختر كاتب السجلات المناسب
    الحد الأدنى لعدد السجلات 1000 غيّر هذه القيمة إلى رقم أكبر بحيث يُدمج حد أدنى من الصفوف لتكوين سجل واحد. القيمة الافتراضية هي صف واحد
    الحد الأقصى لعدد السجلات 10000 غيّر هذه القيمة إلى رقم أكبر من "الحد الأدنى لعدد السجلات". القيمة الافتراضية هي 1,000 صف
  3. للتأكد من دمج عدة سجلات في سجل واحد، افحص المدخلات والمخرجات الخاصة بالمعالج MergeRecord. لاحظ أن المخرجات عبارة عن مصفوفة تضم عدة سجلات إدخال

    الإدخال

    مدخلات المعالج MergeRecord التي تعرض سجلات مفردة

    المخرجات

    مخرجات المعالج MergeRecord التي تعرض مصفوفة مدمجة من السجلات
  4. ضمن قسم "الخصائص" في المعالج PutDatabaseRecord، أدخل القيم التالية

    الخاصية القيمة ملاحظة
    قارئ السجل JSONTreeReader اختر قارئ السجلات المناسب
    نوع قاعدة البيانات Generic اتركها كقيمة افتراضية
    نوع العبارة INSERT
    خدمة تجميع اتصالات قاعدة البيانات ClickHouse JDBC اختر خدمة وحدة التحكم الخاصة بـ ClickHouse
    اسم الجدول tbl أدخل اسم الجدول هنا
    ترجمة أسماء الحقول false اضبطها على "false" بحيث يجب أن تتطابق أسماء الحقول المُدرجة مع اسم العمود
    الحد الأقصى لحجم الدفعة 1000 الحد الأقصى لعدد الصفوف لكل عملية insert. يجب ألا تكون هذه القيمة أقل من قيمة "الحد الأدنى لعدد السجلات" في المعالج MergeRecord
  5. للتأكد من أن كل عملية insert تحتوي على عدة صفوف، تحقق من أن عدد الصفوف في الجدول يزداد بمقدار لا يقل عن قيمة "الحد الأدنى لعدد السجلات" المحددة في MergeRecord.

    نتائج الاستعلام التي تعرض عدد الصفوف في الجدول الوجهة
  6. تهانينا! لقد حمّلت بياناتك بنجاح إلى ClickHouse باستخدام Apache NiFi!

Navigation