إتقان ملفات Parquet: البنية، وحالات الاستخدام، والمزايا الرئيسية

يخزن ملف Parquet البيانات حسب العمود بدلاً من الصف. ويصفه مشروع Apache Parquet بأنه "تنسيق ملفات بيانات مفتوح المصدر وموجه بالأعمدة، مصمم لتخزين البيانات واسترجاعها بكفاءة". ويوضح هذا الخيار التصميمي الوحيد سبب كونه أصغر حجماً، وأسرع في الاستعلام، وأصعب في الفتح عن طريق النقر المزدوج.
ما هو ملف Parquet؟
إن Parquet هو تنسيق ملفات للبيانات الجدولية، ويتم صيانته كأحد مشاريع Apache. وتذكر الوثائق الرسمية أنه "يوفر مخططات ضغط وترميز عالية الأداء للتعامل مع البيانات المعقدة بكميات كبيرة". وتضيف أن هذا التنسيق "مدعوم في العديد من لغات البرمجة وأدوات التحليل".
الخاصية المحددة له هي التوجيه. يكتب ملف CSV صفاً واحداً في كل مرة: كل حقل في السجل الأول، ثم كل حقل في السجل الثاني. بينما يكتب Parquet عموداً واحداً في كل مرة: كل قيمة في العمود الأول، ثم كل قيمة في العمود الثاني.
قد يبدو هذا تفصيلاً تقنياً، لكن له عواقب وخيمة. تميل القيم في العمود الواحد إلى أن تكون متشابهة مع بعضها البعض، مما يجعل ضغطها أفضل بكثير مما يفعله الصف المختلط. كما أن الاستعلام الذي يحتاج إلى ثلاثة أعمدة من أصل 90 يمكنه قراءة تلك الأعمدة الثلاثة فقط، بدلاً من فحص كل صف لاستبعاد معظمه.
تم تحديد التنسيق بشكل رسمي. وتشير وثائق Apache إلى أن "مستودع parquet-format يستضيف المواصفات الرسمية لتنسيق ملف Parquet، مما يحدد كيفية هيكلة البيانات وتخزينها".
كيف يتم هيكلة ملف Parquet
المغلف
يبدأ كل ملف Parquet وينتهي بنفس البايتات الأربعة. وتُظهر المواصفات "رقماً سحرياً مكوناً من 4 بايتات 'PAR1'" في البداية، ونفس الرقم السحري في النهاية تماماً.
بينهما تقع البيانات، وبالقرب من النهاية، تقع البيانات التعريفية. وقبل الرقم السحري الختامي مباشرة، يوجد "طول البيانات التعريفية للملف بالبايت والمكون من 4 بايتات (little endian)". وتخبر هذه القيمة القارئ بمدى المسافة التي يجب أن يتراجعها للعثور على كتلة البيانات التعريفية.
مجموعات الصفوف وأجزاء الأعمدة
داخل المغلف، يتم تقسيم البيانات مرتين. تصف المواصفات ملفاً يحتوي على "N من الأعمدة في هذا الجدول، مقسمة إلى M من مجموعات الصفوف".
مجموعة الصفوف هي شريحة أفقية — أي دفعة من الصفوف. وداخل كل مجموعة صفوف، يتم تخزين قيم كل عمود معاً كجزء من العمود. وبالتالي، فإن الملف الذي يحتوي على 90 عموداً و 10 مجموعات صفوف يحتوي على 900 جزء من الأعمدة، كل منها عبارة عن سلسلة متتالية من القيم من عمود واحد.
هذا التقسيم المزدوج هو ما يجعل القراءة الانتقائية ممكنة. يمكن للاستعلام تخطي مجموعات صفوف بأكملها لا يمكن أن تحتوي على صفوف مطابقة، ثم قراءة أجزاء الأعمدة التي يحتاجها فقط من المجموعات المتبقية.
لماذا تقع البيانات التعريفية في النهاية
قد يفاجئ هذا الأشخاص الذين يتوقعون وجود ترويسة. وتوضح وثائق Apache السبب مباشرة: "تُكتب البيانات التعريفية للملف بعد البيانات للسماح بالكتابة في تمريرة واحدة".
إن برنامج الكتابة الذي يقوم ببث مجموعة بيانات كبيرة لا يعرف مواضع البايت النهائية لكل جزء حتى ينتهي من كتابتها. ويعني وضع البيانات التعريفية في النهاية أنه لن يضطر أبداً إلى العودة وتعديل الترويسة.
وينبثق نمط القراءة من هذا الأمر. ووفقاً للوثائق، فإن البيانات التعريفية للملف "تحتوي على مواقع جميع نقاط بداية أجزاء الأعمدة". وتضيف أنه "يُتوقع من القراء قراءة البيانات التعريفية للملف أولاً للعثور على جميع أجزاء الأعمدة التي يهتمون بها".
ما الذي يُستخدم Parquet لأجله
ستصادف عادةً ملف .parquet في واحدة من أربع حالات.
عمليات تصدير مستودعات البيانات. عندما يقوم شخص ما بتصدير جدول كبير من مستودع بيانات حديث، غالباً ما يكون هذا هو الخيار الافتراضي، لأن حجم الملف يظل قابلاً للإدارة.
تخزين بحيرة البيانات. تستخدمه الملفات الموجودة في التخزين السحابي للكائنات بشكل شائع، وتحديداً لأن المحركات يمكنها قراءة مجموعة فرعية من الأعمدة دون تنزيل كل شيء.
التسليم بين الفرق. غالباً ما يلجأ مهندس البيانات الذي يرسل إليك معاملات عام كامل إلى هذا التنسيق بدلاً من ملف CSV الذي سيكون أكبر بعدة مرات.
التبادل بين أدوات التحليل. نظراً لأن التنسيق مدعوم عبر العديد من اللغات والأدوات، فإنه ينتقل بين الأنظمة دون الحاجة إلى خطوة تحويل في المنتصف.
القاسم المشترك هو الحجم. فهو يصبح الخيار البديهي عندما يتوقف ملف CSV عن كونة مريحاً في النقل والتداول.
Parquet vs CSV
| Parquet | CSV | |
|---|---|---|
| التوجيه | موجه بالأعمدة | موجه بالصفوف |
| قابل للقراءة في محرر نصوص | لا، إنه ثنائي | نعم |
| حجم الملف النموذجي | أصغر، من خلال ضغط الأعمدة | أكبر لنفس البيانات |
| قراءة بضعة أعمدة | يقرأ فقط أجزاء الأعمدة تلك | يقرأ الملف بأكمله |
| أنواع البيانات | محمولة في البيانات التعريفية للملف | يتم استنتاجها بواسطة أي برنامج يفتحه |
| يفتح بالنقر المزدوج | ليس عموماً | يفتح عادةً في برنامج جداول البيانات |
| الأفضل في | الجداول الكبيرة، والاستعلام المتكرر | الجداول الصغيرة، والفحص السريع، والمشاركة العالمية |
يستحق سلوك الأنواع تنويهاً بسيطاً. لا يملك ملف CSV أي فكرة عما إذا كان 00123 رقماً أم سلسلة نصية، ولهذا السبب تتشوه الأصفار البادئة والتواريخ عند الاستيراد. بينما يسجل Parquet الأنواع في بياناته التعريفية، لذا فإن القيمة التي كتبتها هي القيمة التي تقرأها مجدداً.
بالنسبة للجانب الموجه بالصفوف في هذه المقارنة، يغطي دليل CSV نفس الموضوع من الاتجاه الآخر. ويغطي تحليل TSV البديل المفصول بعلامات التبويب.
المزايا الرئيسية
ضغط يتضاعف فعلياً. يمنح تخزين القيم المتشابهة بجانب بعضها البعض برنامج الترميز مادة أكبر بكثير للعمل عليها. وتنسب وثائق Apache الفضل إلى "مخططات الضغط والترميز عالية الأداء".
تقليم الأعمدة. قراءة ثلاثة أعمدة من أصل 90 تكلف تقريباً عمليات إدخال/إخراج لثلاثة أعمدة بدلاً من 90.
تخطي مجموعات الصفوف. نظراً لأن البيانات التعريفية تسجل ما يوجد في كل مجموعة صفوف، يمكن للقارئ استبعاد شرائح كاملة قبل لمسها.
بقاء الأنواع سليمة. تظل التواريخ تواريخ وتحتفظ المعرفات بأصفارها البادئة، لأن المخطط ينتقل داخل الملف.
الكتابة في تمريرة واحدة. وجود البيانات التعريفية في النهاية يعني إمكانية كتابة ملفات كبيرة جداً كبث متواصل.
دعم واسع النطاق. تشير الوثائق إلى وجود دعم عبر "العديد من لغات البرمجة وأدوات التحليل"، لذا نادراً ما يكون طريقاً مسدوداً.
أين يتوقف Parquet عن تقديم المساعدة
يحل Parquet مشكلتي التخزين والاسترجاع. لكنه لا يجيب عن أي من الأسئلة التي قد تدور في ذهنك حول ما يحتويه الملف بالفعل.
إنه ملف ثنائي، لذا لا يمكنك إلقاء نظرة سريعة عليه. يستغرق فتح ملف CSV للتحقق مما إذا كان عمود الإيرادات إجمالياً أم صافياً خمس ثوانٍ. بينما يحتاج الملف الثنائي إلى أداة قبل أن تتمكن من رؤية أي شيء على الإطلاق.
كما أنه غير مناسب للبيانات الصغيرة. بالنسبة لجدول بحث يحتوي على 200 صف، فإن العبء الإضافي للبيانات التعريفية ومتطلبات الأدوات يفوقان أي فائدة للضغط. ويعد ملف CSV التنسيق الأفضل في هذه الحالة، والاعتراف بذلك هو جزء من استخدام Parquet بشكل جيد.
ولا يضمن أي شيء يتعلق بالجودة. يمكن للملف أن يحمل بيانات لا قيمة لها مكتوبة بشكل مثالي ومضغوطة بكفاءة. سجلات مكررة، عمود عملة يخلط بين عملتين، معرف عميل تغير مخططه في مارس. يضمن التنسيق دقة النقل، وليس صحة المحتوى.
كيفية العمل مع ملف Parquet إذا لم تكن مهندساً
هذه هي الفجوة العملية. تفترض معظم أدوات الأعمال وجود جدول بيانات، ولن يفتح ملف .parquet بالطريقة التي يفتح بها ملف CSV.
المسار العملي هو خطوة التحويل. اطلب من الشخص الذي أنشأ الملف نسخة مستخرجة بتنسيق CSV أو Excel للأعمدة التي تحتاجها بالفعل، أو قم بتحويلها بنفسك باستخدام أي أداة تدعم Parquet. ستفقد ميزة الضغط، وهو أمر لا يهم بمجرد أن تصبح البيانات على جهازك ويتم تقليص حجمها.
من هناك، يصبح العمل تحليلاً عادياً. تسرد صفحة أسعار Powerdrill Bloom عمليات التحميل لملفات Excel و CSV و PDF والمستندات، لذا فإن النسخة المستخرجة المحولة تدخل مباشرة. وتُطرح الأسئلة بلغة طبيعية بدلاً من كتابتها كاستعلامات. يغطي مساعد CSV بالذكاء الاصطناعي هذا المسار، وتغطي موصلات البيانات الحالات التي يكون فيها سحب البيانات أفضل من تصديرها.
التمييز الذي يستحق الاحتفاظ به هو أن Parquet هو قرار تخزين يتم اتخاذه في مرحلة سابقة لك. إنه ليس أداة تحليل، والتحويل عنه بمجرد وصول الملف إلى مكتبك هو أمر طبيعي وليس مجرد حل مؤقت.
الخاتمة
إن Parquet هو تخزين موجه بالأعمدة مع وجود مخططه وفهرسه في نهاية الملف. يمنح هذا التصميم ميزات الضغط، والقراءة الانتقائية، وأنواع البيانات الموثوقة، ولهذا السبب أصبح الخيار الافتراضي لأي شيء كبير الحجم.
ما لا يوفره هو وضوح الرؤية. في اللحظة التي يصل فيها الملف إلى شخص يحتاج إلى إجابات بدلاً من التخزين، فإن الخطوة التالية المفيدة عادةً هي الحصول على نسخة مستخرجة محددة النطاق وطرح سؤال.
إذا كان هذا هو وضعك الحالي، فجرب Powerdrill Bloom مع الملف المحول وابدأ بـ تحويله إلى مخطط بياني.
الأسئلة الشائعة
ما الذي يُسخدم ملف Parquet لأجله؟
يُسخدم Parquet لتخزين مجموعات البيانات الجدولية الكبيرة بكفاءة. وهو شائع في عمليات تصدير مستودعات البيانات، وتخزين بحيرات البيانات، والتسليم بين الفرق، والتبادل بين أدوات التحليل. والسبب في ذلك هو أنه يضغط البيانات بشكل جيد ويدعم قراءة الأعمدة المحددة فقط.
هل Parquet أفضل من CSV؟
بالنسبة للجداول الكبيرة التي يتم الاستعلام عنها بشكل متكرر، نعم: فهو أصغر حجماً، ويحمل أنواع البيانات، ويدعم تقليم الأعمدة. أما بالنسبة للجداول الصغيرة التي تحتاج إلى فحصها أو مشاركتها على نطاق واسع، فإن CSV أسهل لأنه نصي ويفتح في أي مكان.
هل يمكنني فتح ملف Parquet في Excel؟
ليس عن طريق النقر المزدوج عليه، لأن Parquet هو تنسيق ثنائي وليس نصياً. والنهج الشائع هو تحويله إلى CSV أو Excel أولاً، أو استخدام أداة تقرأ Parquet مباشرة.
لماذا يتم تخزين البيانات التعريفية لـ Parquet في نهاية الملف؟
توضح وثائق Apache أن البيانات التعريفية تُكتب بعد البيانات "للسماح بالكتابة في تمريرة واحدة". إن برنامج الكتابة الذي يقوم ببث مجموعة بيانات كبيرة لا يعرف مواضع الأجزاء النهائية مسبقاً، لذا فإن كتابة البيانات التعريفية في النهاية تتجنب العودة إلى الترويسة.
ما هي مجموعات الصفوف في Parquet؟
مجموعة الصفوف هي شريحة أفقية من الجدول. تصف المواصفات أعمدة الملف بأنها "مقسمة إلى M من مجموعات الصفوف"، مع تخزين كل عمود كجزء منفصل داخل كل مجموعة. يتيح هذا التخطيط للقراء تخطي كل من المجموعات والأعمدة التي لا يحتاجون إليها.