يعمل التكامل مع كتالوج SeaweedFS مع جداول Iceberg فقط.
- خدمة واحدة - تُقدَّم البيانات الوصفية للكتالوج وبيانات Parquet من خلال عملية واحدة، دون قاعدة بيانات منفصلة للبيانات الوصفية
- التوافق مع مواصفة كتالوج Iceberg REST عبر واجهة برمجة تطبيقات REST
- صيانة من جانب الخادم - ضغط تلقائي لملفات Parquet وانتهاء صلاحية اللقطات، دون خدمة صيانة خارجية
بما أن هذه الميزة تجريبية، ستحتاج إلى تفعيلها باستخدام:
SET allow_experimental_database_iceberg = 1;إعداد بيئة التطوير المحلية
المتطلبات الأساسية
- Docker وDocker Compose: تأكد من تثبيت Docker وتشغيله
- الإصدارات: SeaweedFS 4.42 أو أحدث؛ وClickHouse 26.8 أو أحدث (تدعم الإصدارات بدءًا من 25.8 القراءة والإدراج، لكن إنشاء الجداول عبر كتالوج يتطلب الإصدار 26.8)
- بايثون مع PyIceberg (اختياري): يُستخدم أدناه لإدخال بيانات نموذجية أولية
إعداد كتالوج SeaweedFS المحلي
s3config.json يتضمن بيانات اعتماد بوابة S3 والكتالوج:
docker-compose.yml يتضمن الإعدادات التالية:
mini حزمة SeaweedFS كاملةً ضمن حاوية واحدة. ينشئ الخيار -tableBucket=analytics مسبقًا bucket لـ S3 Tables باسم analytics، ويُستخدم هذا الـbucket باعتباره warehouse لـ Iceberg.
الخطوة 3: شغّل الأمر التالي لبدء الخدمات:
إضافة بيانات نموذجية
pip install pyiceberg pyarrow):
الاتصال بكتالوج SeaweedFS المحلي
catalog_credential وoauth_server_uri للمصادقة مع الكتالوج نفسه عبر تدفق بيانات اعتماد عميل OAuth2. يقبل SeaweedFS مفتاح الوصول والمفتاح السري نفسيهما لكليهما.
الاستعلام عن جداول كتالوج في SeaweedFS باستخدام ClickHouse
علامات الاقتباس المعكوسة مطلوبةعلامات الاقتباس المعكوسة مطلوبة لأن ClickHouse لا يدعم أكثر من مساحة اسم واحدة.
إنشاء الجداول وكتابة البيانات من ClickHouse
IcebergS3 مسار التخزين للجدول الجديد، ويجعل write_full_path_in_iceberg_metadata ClickHouse يسجّل الموقع الكامل للجدول في الكتالوج.
يتطلب إنشاء الجداول عبر كتالوج استخدام ClickHouse 26.8 أو إصدار أحدث. تكتب الإصدارات من 26.4 إلى 26.7 ملفات الجدول قبل تسجيل مساحة الاسم، وهو ما يرفضه SeaweedFS ما لم تكن مساحة الاسم موجودة مسبقًا في الكتالوج؛ أما الإصدارات السابقة للإصدار 26.4 فتبدو ناجحة، لكن تُكتب ملفات الجدول في تخزين الكائنات دون تسجيلها في الكتالوج.
تحميل البيانات من بحيرة البيانات إلى ClickHouse
INSERT INTO SELECT: