Apache Beam هو نموذج برمجة موحّد ومفتوح المصدر يتيح للمطوّرين تعريف خطوط أنابيب معالجة البيانات الدفعية والمتدفقة (المستمرة) وتنفيذها. وتكمن مرونة Apache Beam في قدرته على دعم مجموعة واسعة من سيناريوهات معالجة البيانات، بدءًا من عمليات ETL (الاستخراج والتحويل والتحميل) ووصولًا إلى معالجة الأحداث المعقّدة والتحليلات في الوقت الفعلي.
يعتمد هذا التكامل على JDBC connector الرسمي من ClickHouse في طبقة الإدراج الأساسية.
تُصان حزمة التكامل المطلوبة لدمج Apache Beam مع ClickHouse وتُطوَّر ضمن Apache Beam I/O Connectors — وهي حزمة تكاملات تضم العديد من أنظمة تخزين البيانات وقواعد البيانات الشائعة.
يوجد تنفيذ org.apache.beam.sdk.io.clickhouse.ClickHouseIO داخل مستودع Apache Beam.
إعداد حزمة ClickHouse لـ Apache Beam
أضِف الاعتمادية التالية إلى نظام إدارة الحزم لديك:
إصدار Beam الموصى بهيُوصى باستخدام الموصل ClickHouseIO ابتداءً من إصدار Apache Beam 2.59.0.
قد لا تدعم الإصدارات الأقدم وظائف هذا الموصل دعمًا كاملًا.
يمكن العثور على الحِزم في مستودع Maven الرسمي.
يقرأ المثال التالي ملف CSV باسم input.csv على أنه PCollection، ثم يحوّله إلى كائن Row (باستخدام المخطط المحدد) ويُدرجه في مثيل ClickHouse محلي باستخدام ClickHouseIO:
معلمات ClickHouseIO.Write
يمكنك ضبط إعدادات ClickHouseIO.Write باستخدام دوال الضبط التالية:
يرجى مراعاة القيود التالية عند استخدام الموصل:
- حتى الآن، لا تتوفر سوى عملية Sink. ولا يدعم الموصل عملية Source.
- يُجري ClickHouse إزالة التكرار عند الإدراج في جدول
ReplicatedMergeTree أو في جدول Distributed مبني فوق ReplicatedMergeTree. أما بدون replication، فقد يؤدي الإدراج في جدول MergeTree عادي إلى تكرار الصفوف إذا فشلت عملية الإدراج ثم نجحت إعادة المحاولة لاحقًا. ومع ذلك، تُدرَج كل block بصورة ذرّية، ويمكن ضبط حجم block باستخدام ClickHouseIO.Write.withMaxInsertBlockSize(long). وتتحقق إزالة التكرار باستخدام checksums الخاصة بـ blocks المُدرجة. لمزيد من المعلومات حول إزالة التكرار، يُرجى زيارة إزالة التكرار وإعدادات insert deduplicate.
- لا يُجري الموصل أي عبارات DDL؛ لذلك، يجب أن يكون الجدول الهدف موجودًا قبل الإدراج.
- توثيق الفئة
ClickHouseIO.
- مستودع
Github الخاص بالأمثلة: clickhouse-beam-connector.