البرمجة

حفظ أعمدة التقسيم في Apache Spark DataFrame

في عملية تقسيم البيانات في Apache Spark باستخدام الوظيفة DataFrame.write.partitionBy()، يتم تحقيق الهدف المتوقع من تقسيم البيانات بناءً على الأعمدة المحددة، ولكن يتم إزالة هذه الأعمدة من البيانات والمخطط (schema). يظهر هذا السلوك بشكل طبيعي ومقبول في بعض الحالات، لكنه قد يكون غير مرغوب فيه في حالات أخرى حيث يكون الحفاظ على هذه الأعمدة مهمًا.

لمنع DataFrame.write.partitionBy() من إزالة الأعمدة المستخدمة للتقسيم من البيانات والمخطط، يمكنك استخدام الخيار overwrite أو append مع وظيفة mode() في Spark.

للقيام بذلك، يمكنك تعديل السطور التي تقوم بكتابة البيانات إلى الشكل التالي:

scala
df.write .mode("overwrite") // يمكنك استخدام "append" إذا كنت ترغب في الإضافة إلى البيانات الموجودة بالفعل .partitionBy("type", "category") .parquet(config.outpath)

باستخدام mode("overwrite")، سيتم حفظ جميع الأعمدة، بما في ذلك الأعمدة المستخدمة للتقسيم، في المخطط الناتج ولن يتم إزالتها. يمكنك تعديل الخيار mode() حسب احتياجاتك، ويمكن أيضًا استخدام mode("append") إذا كنت ترغب في الإضافة إلى البيانات الموجودة بالفعل في المجلد المستهدف.

باستخدام هذه الطريقة، ستحصل على النتائج المرجوة مع الحفاظ على الأعمدة المستخدمة للتقسيم في البيانات والمخطط.

المزيد من المعلومات

تقوم Apache Spark بتوفير واجهة برمجة تطبيقات (API) لمعالجة البيانات بشكل توزيعي على مجموعة من الأجهزة. تعتبر Spark DataFrame إحدى مكونات هذه الواجهة، وهي هيكل بيانات يشبه الجداول في قواعد البيانات العلاقية. يستخدم Spark DataFrame لتمثيل البيانات بطريقة منظمة ويوفر واجهة سهلة للقيام بتحليلات متقدمة ومعالجة البيانات.

في مثال الكود الذي قدمته سابقًا، تقوم الوظيفة DataFrame.write.partitionBy() بتقسيم البيانات بناءً على القيم في الأعمدة المحددة (في هذه الحالة، “type” و “category”) وحفظ البيانات المقسمة في مجلدات فرعية داخل مسار الإخراج المحدد في config.outpath باستخدام تنسيق Parquet.

يمكن تكوين Spark للتعامل مع مجموعة واسعة من مصادر البيانات وتحويلات البيانات باستخدام العديد من الوظائف المدمجة. يعزز هذا الإطار من قدرتك على تحليل ومعالجة البيانات الكبيرة بكفاءة على مستوى التوزيع.

قد يكون الاحتفاظ بالأعمدة المستخدمة للتقسيم مهمًا في بعض السيناريوهات، مثل عند الحاجة إلى الوصول السريع إلى القيم المستخدمة للتقسيم أو عند استخدام المخطط كتكامل للبيانات. يتيح لك استخدام الخيار mode("overwrite") في وظيفة الكتابة (write()) الحفاظ على الأعمدة المستخدمة للتقسيم في المخطط الناتج.

بهذه الطريقة، يمكنك الاستفادة القصوى من إمكانيات Apache Spark في معالجة وتحليل البيانات بشكل فعال وموزع.

زر الذهاب إلى الأعلى