> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> تمرير البيانات المتدفقة إلى ClickHouse باستخدام مسارات بيانات NiFi

# ربط Apache NiFi بـ ClickHouse

export const CommunityMaintainedBadge = () => {
  return <div className="CommunityMaintainedBadge">
            <div className="CommunityMaintainedIcon">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 256 256">
                <path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"></path>
            </svg>
        </div>
            تتم صيانته من قِبل المجتمع
        </div>;
};

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<CommunityMaintainedBadge />

<a href="https://nifi.apache.org/" target="_blank">Apache NiFi</a> هو برنامج مفتوح المصدر لإدارة سير العمل، صُمم لأتمتة تدفق البيانات بين الأنظمة البرمجية. ويتيح إنشاء مسارات بيانات ETL، ويأتي مزودًا بأكثر من 300 معالج بيانات. يوضح هذا الدليل العملي خطوة بخطوة كيفية توصيل Apache NiFi بـ ClickHouse كمصدر ووجهة، وكيفية تحميل مجموعة بيانات تجريبية.

<Steps>
  <Step title="جهّز تفاصيل الاتصال الخاصة بك" id="1-gather-your-connection-details">
    للاتصال بـ ClickHouse باستخدام HTTP(S)، تحتاج إلى المعلومات التالية:

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

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

    <div className="ch-image-md">
      <Frame>
        <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/cloud-connect-button.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=ec0a298a33ca841e947fa5e8bae47362" alt="زر Connect لخدمة ClickHouse Cloud" width="998" height="932" data-path="images/_snippets/cloud-connect-button.webp" />
      </Frame>
    </div>

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

    <div className="ch-image-md">
      <Frame>
        <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/connection-details-https.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=cb0fbd98aa2b5b7ca484c9f53395ee07" alt="تفاصيل اتصال HTTPS لخدمة ClickHouse Cloud" width="1320" height="1184" data-path="images/_snippets/connection-details-https.webp" />
      </Frame>
    </div>

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

  <Step title="نزِّل Apache NiFi وشغِّله" id="2-download-and-run-apache-nifi">
    لإعداد جديد، نزِّل الملف التنفيذي من [https://nifi.apache.org/download.html](https://nifi.apache.org/download.html) ثم ابدأ بتشغيل `./bin/nifi.sh start`
  </Step>

  <Step title="تنزيل برنامج تشغيل ClickHouse JDBC" id="3-download-the-clickhouse-jdbc-driver">
    1. انتقل إلى <a href="https://github.com/ClickHouse/clickhouse-java/releases" target="_blank">صفحة إصدارات برنامج تشغيل ClickHouse JDBC</a> على GitHub وابحث عن أحدث إصدار من JDBC
    2. ضمن هذا الإصدار، انقر على "Show all xx assets" ثم ابحث عن ملف JAR الذي يحتوي على الكلمة المفتاحية "shaded" أو "all"، مثل `clickhouse-jdbc-0.5.0-all.jar`
    3. ضع ملف JAR في مجلد يمكن لـ Apache NiFi الوصول إليه، ودوّن المسار المطلق
  </Step>

  <Step title={<>أضِف خدمة وحدة التحكم <code>DBCPConnectionPool</code> واضبط خصائصها</>} id="4-add-dbcpconnectionpool-controller-service-and-configure-its-properties">
    1. لتهيئة خدمة وحدة تحكم في Apache NiFi، انتقل إلى صفحة تهيئة تدفق NiFi بالنقر على زر "الترس"

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_01.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=3ecb50806baacf0177cdde10d0bea34c" size="sm" border alt="صفحة تهيئة تدفق NiFi مع تمييز زر الترس" width="564" height="409" data-path="images/integrations/data-ingestion/etl-tools/nifi_01.webp" />

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

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_02.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=e49f17a3ccf81855ddf6f33ae71f8b2d" size="lg" border alt="علامة تبويب خدمات وحدة التحكم مع تمييز زر الإضافة" width="1999" height="636" data-path="images/integrations/data-ingestion/etl-tools/nifi_02.webp" />

    3. ابحث عن `DBCPConnectionPool` وانقر على زر "إضافة"

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_03.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=a214a72eb65b893a71426c349c6851a4" size="lg" border alt="مربع حوار اختيار خدمة وحدة التحكم مع تمييز DBCPConnectionPool" width="1999" height="1287" data-path="images/integrations/data-ingestion/etl-tools/nifi_03.webp" />

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

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_04.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=5bc4d67491b1e5958664762878c41a87" size="lg" border alt="قائمة خدمات وحدة التحكم تعرض DBCPConnectionPool غير صالحة مع تمييز زر الترس" width="1893" height="607" data-path="images/integrations/data-ingestion/etl-tools/nifi_04.webp" />

    5. ضمن قسم "الخصائص"، أدخل القيم التالية

    | الخاصية                      | القيمة                                                                                   | ملاحظة                                                    |
    | ---------------------------- | ---------------------------------------------------------------------------------------- | --------------------------------------------------------- |
    | URL اتصال قاعدة البيانات     | jdbc[https://HOSTNAME:8443/default?ssl=true](https://HOSTNAME:8443/default?ssl=true)true | استبدل 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                                      |

    6. في قسم الإعدادات، غيِّر اسم خدمة وحدة التحكم إلى "ClickHouse JDBC" لتسهيل الرجوع إليها

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_05.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=869cce96c0ee8ccd527695c8dea21af7" size="lg" border alt="مربع حوار تهيئة DBCPConnectionPool مع تعبئة الخصائص" width="1586" height="1184" data-path="images/integrations/data-ingestion/etl-tools/nifi_05.webp" />

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

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_06.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=2460399dc3113d995786c373f7df4d37" size="lg" border alt="قائمة خدمات وحدة التحكم مع تمييز زر البرق" width="2878" height="812" data-path="images/integrations/data-ingestion/etl-tools/nifi_06.webp" />

           <br />

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_07.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=485f45409ead4ff9cfb316e8ee2bc8d9" size="lg" border alt="مربع حوار تأكيد تمكين خدمة وحدة التحكم" width="1586" height="1172" data-path="images/integrations/data-ingestion/etl-tools/nifi_07.webp" />

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

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_08.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=b7d9e1ce84d3bbd46d913e940847a610" size="lg" border alt="قائمة خدمات وحدة التحكم تعرض خدمة ClickHouse JDBC مُمكَّنة" width="1999" height="636" data-path="images/integrations/data-ingestion/etl-tools/nifi_08.webp" />
  </Step>

  <Step title={<>القراءة من جدول باستخدام المعالج <code>ExecuteSQL</code></>} id="5-read-from-a-table-using-the-executesql-processor">
    1. أضف المعالج ​`​ExecuteSQL`، إلى جانب المعالجات المناسبة السابقة واللاحقة

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_09.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=abf11db5bb1dc248a233669a23aef33e" size="md" border alt="لوحة NiFi تعرض المعالج ExecuteSQL ضمن سير عمل" width="768" height="316" data-path="images/integrations/data-ingestion/etl-tools/nifi_09.webp" />

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

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

    3. ابدأ المعالج `​​ExecuteSQL`

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_10.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=81d02e73ee6ca1d543015bc0667eb442" size="lg" border alt="إعدادات المعالج ExecuteSQL بعد تعبئة الخصائص" width="858" height="220" data-path="images/integrations/data-ingestion/etl-tools/nifi_10.webp" />

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

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_11.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=270caae3211e7b81b50d1e309aba8606" size="lg" border alt="نافذة قائمة الانتظار تعرض عناصر FlowFile الجاهزة للفحص" width="1956" height="794" data-path="images/integrations/data-ingestion/etl-tools/nifi_11.webp" />

    5. بدّل العرض إلى "formatted" لعرض نتيجة `FlowFile` الناتج

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_12.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=1dc1c90d3bb71ab84465021653fddadf" size="lg" border alt="عارض محتوى FlowFile يعرض نتائج الاستعلام في العرض المنسّق" width="1762" height="1500" data-path="images/integrations/data-ingestion/etl-tools/nifi_12.webp" />
  </Step>

  <Step title={<>الكتابة إلى جدول باستخدام <code>MergeRecord</code> و <code>PutDatabaseRecord</code> المعالج</>} id="6-write-to-a-table-using-mergerecord-and-putdatabaserecord-processor">
    1. لكتابة عدة صفوف في عملية insert واحدة، نحتاج أولاً إلى دمج عدة سجلات في سجل واحد. يمكن تنفيذ ذلك باستخدام المعالج `MergeRecord`

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

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

    3. للتأكد من دمج عدة سجلات في سجل واحد، افحص المدخلات والمخرجات الخاصة بالمعالج `MergeRecord`. لاحظ أن المخرجات عبارة عن مصفوفة تضم عدة سجلات إدخال

       الإدخال

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_13.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=2ccc4198a02b0b3b7402ee79e5ae12c8" size="sm" border alt="مدخلات المعالج MergeRecord التي تعرض سجلات مفردة" width="624" height="306" data-path="images/integrations/data-ingestion/etl-tools/nifi_13.webp" />

       المخرجات

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_14.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=0b02a554dceeb6c594fd800d04dcfb89" size="sm" border alt="مخرجات المعالج MergeRecord التي تعرض مصفوفة مدمجة من السجلات" width="707" height="501" data-path="images/integrations/data-ingestion/etl-tools/nifi_14.webp" />

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

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

    5. للتأكد من أن كل عملية insert تحتوي على عدة صفوف، تحقق من أن عدد الصفوف في الجدول يزداد بمقدار لا يقل عن قيمة "الحد الأدنى لعدد السجلات" المحددة في `MergeRecord`.

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_15.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=36b01a981712543038b0c3f5d2f06679" size="sm" border alt="نتائج الاستعلام التي تعرض عدد الصفوف في الجدول الوجهة" width="828" height="1306" data-path="images/integrations/data-ingestion/etl-tools/nifi_15.webp" />

    6. تهانينا! لقد حمّلت بياناتك بنجاح إلى ClickHouse باستخدام Apache NiFi!
  </Step>
</Steps>
