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:

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

إذا كنت تستخدم ClickHouse مُدارًا ذاتيًا، فسيُحدِّد مسؤول ClickHouse لديك تفاصيل الاتصال.
نزِّل Apache NiFi وشغِّله
لإعداد جديد، نزِّل الملف التنفيذي من https://nifi.apache.org/download.html ثم ابدأ بتشغيل ./bin/nifi.sh start
تنزيل برنامج تشغيل ClickHouse JDBC
- انتقل إلى صفحة إصدارات برنامج تشغيل ClickHouse JDBC على GitHub وابحث عن أحدث إصدار من JDBC
- ضمن هذا الإصدار، انقر على "Show all xx assets" ثم ابحث عن ملف JAR الذي يحتوي على الكلمة المفتاحية "shaded" أو "all"، مثل
clickhouse-jdbc-0.5.0-all.jar - ضع ملف JAR في مجلد يمكن لـ Apache NiFi الوصول إليه، ودوّن المسار المطلق
[object Object]
-
لتهيئة خدمة وحدة تحكم في Apache NiFi، انتقل إلى صفحة تهيئة تدفق NiFi بالنقر على زر "الترس"

-
حدِّد علامة تبويب خدمات وحدة التحكم، ثم أضِف خدمة وحدة تحكم جديدة بالنقر على زر
+في أعلى اليمين
-
ابحث عن
DBCPConnectionPoolوانقر على زر "إضافة"
-
ستكون
DBCPConnectionPoolالمضافة حديثًا في حالة غير صالحة افتراضيًا. انقر على زر "الترس" لبدء التهيئة
-
ضمن قسم "الخصائص"، أدخل القيم التالية
| الخاصية | القيمة | ملاحظة |
|---|---|---|
| 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 |
-
في قسم الإعدادات، غيِّر اسم خدمة وحدة التحكم إلى "ClickHouse JDBC" لتسهيل الرجوع إليها

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

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

[object Object]
-
أضف المعالج
ExecuteSQL، إلى جانب المعالجات المناسبة السابقة واللاحقة
-
ضمن قسم "Properties" في المعالج
ExecuteSQL، أدخل القيم التاليةProperty Value Remark Database Connection Pooling Service ClickHouse JDBC اختر خدمة وحدة التحكم المُعدّة لـ ClickHouse SQL select query SELECT * FROM system.metrics أدخل الاستعلام هنا -
ابدأ المعالج
ExecuteSQL
-
للتأكد من أن الاستعلام قد تمت معالجته بنجاح، افحص أحد عناصر
FlowFileفي قائمة انتظار الإخراج
-
بدّل العرض إلى "formatted" لعرض نتيجة
FlowFileالناتج
[object Object]
-
لكتابة عدة صفوف في عملية insert واحدة، نحتاج أولاً إلى دمج عدة سجلات في سجل واحد. يمكن تنفيذ ذلك باستخدام المعالج
MergeRecord -
ضمن قسم "الخصائص" في المعالج
MergeRecord، أدخل القيم التاليةالخاصية القيمة ملاحظة قارئ السجل JSONTreeReaderاختر قارئ السجلات المناسب كاتب السجل JSONReadSetWriterاختر كاتب السجلات المناسب الحد الأدنى لعدد السجلات 1000 غيّر هذه القيمة إلى رقم أكبر بحيث يُدمج حد أدنى من الصفوف لتكوين سجل واحد. القيمة الافتراضية هي صف واحد الحد الأقصى لعدد السجلات 10000 غيّر هذه القيمة إلى رقم أكبر من "الحد الأدنى لعدد السجلات". القيمة الافتراضية هي 1,000 صف -
للتأكد من دمج عدة سجلات في سجل واحد، افحص المدخلات والمخرجات الخاصة بالمعالج
MergeRecord. لاحظ أن المخرجات عبارة عن مصفوفة تضم عدة سجلات إدخالالإدخال

المخرجات

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