يُعد Parquet تنسيق ملفات فعّالًا لتخزين البيانات بصيغة عمودية.
يوفّر ClickHouse دعمًا لقراءة ملفات Parquet وكتابتها.
عند الإشارة إلى مسار ملف في استعلام، يعتمد الموضع الذي سيحاول ClickHouse القراءة منه على إصدار ClickHouse الذي تستخدمه.إذا كنت تستخدم clickhouse-local، فستتم القراءة من موقع نسبي إلى المكان الذي شغّلت منه ClickHouse Local.
إذا كنت تستخدم ClickHouse Server أو ClickHouse Cloud عبر clickhouse client، فستتم القراءة من موقع نسبي إلى الدليل /var/lib/clickhouse/user_files/ على الخادم.
قبل تحميل البيانات، يمكننا استخدام الدالة file() لاستعراض بنية ملف Parquet تجريبي:
لقد استخدمنا Parquet كوسيطةٍ ثانية لكي يعرف ClickHouse تنسيق الملف. سيطبع هذا الأعمدة مع أنواعها:
يمكننا أيضًا استكشاف الملفات قبل استيراد البيانات فعليًا، باستخدام إمكانات SQL الكاملة:
يمكننا تجاوز تحديد التنسيق صراحةً لـ file() و INFILE/OUTFILE.
في هذه الحالة، سيحدِّد ClickHouse التنسيق تلقائيًا استنادًا إلى امتداد الملف.
فلننشئ جدولًا سنستورد إليه بيانات Parquet:
يمكننا الآن استيراد البيانات باستخدام الجملة FROM INFILE:
لاحظ كيف حوّل ClickHouse تلقائيًا السلاسل النصية في Parquet (في العمود date) إلى النوع Date. ويعود ذلك إلى أن ClickHouse يُجري تحويلًا تلقائيًا للنوع استنادًا إلى الأنواع الموجودة في الجدول الهدف.
إدراج ملف محلي في خادم بعيد
إذا كنت تريد إدراج ملف Parquet محلي في خادم ClickHouse بعيد، فيمكنك القيام بذلك بتمرير محتويات الملف إلى clickhouse-client، كما هو موضح أدناه:
إنشاء جداول جديدة من ملفات Parquet
بما أن ClickHouse يقرأ مخطط ملف Parquet، يمكننا إنشاء الجداول مباشرةً:
سيؤدي ذلك تلقائيًا إلى إنشاء جدول وملئه من ملف Parquet معيّن:
افتراضيًا، يتعامل ClickHouse بصرامة مع أسماء الأعمدة والأنواع والقيم. لكن في بعض الحالات، يمكن تخطي الأعمدة غير الموجودة أو القيم غير المدعومة أثناء الاستيراد. ويمكن التحكم في ذلك باستخدام إعدادات Parquet.
عند استخدام INTO OUTFILE مع ClickHouse Cloud، ستحتاج إلى تشغيل الأوامر عبر clickhouse client على الجهاز الذي سيُكتب فيه الملف.
لتصدير أي جدول أو نتيجة استعلام إلى ملف Parquet، يمكن استخدام عبارة INTO OUTFILE:
سينشئ ذلك الملف export.parquet في دليل العمل.
أنواع البيانات في ClickHouse وParquet
تتطابق أنواع البيانات في ClickHouse وParquet إلى حدٍّ كبير، لكنها تختلف قليلًا. على سبيل المثال، يصدِّر ClickHouse النوع DateTime بصيغة int64 في Parquet. وإذا استوردنا هذا مجددًا إلى ClickHouse، فسنرى أرقامًا (ملف time.parquet):
في هذه الحالة، يمكن استخدام تحويل الأنواع:
يوفّر ClickHouse دعمًا للعديد من التنسيقات، النصية والثنائية على حدّ سواء، لتلبية مختلف السيناريوهات والمنصات. اطّلع على المزيد من التنسيقات وطرق العمل معها في المقالات التالية:
واطّلع أيضًا على clickhouse-local - وهي أداة محمولة متكاملة الميزات للعمل على الملفات المحلية/البعيدة دون الحاجة إلى ClickHouse server.