قراءة PySpark CSV ()

Qra T Pyspark Csv



يمكن إنشاء PySpark DataFrame من بيانات CSV في PySpark باستخدام وظيفة read.csv (). في بعض السيناريوهات ، إذا كنت ترغب في تحميل البيانات الخارجية في PySpark DataFrame ، فإن PySpark يدعم العديد من التنسيقات مثل JSON و CSV وما إلى ذلك. في هذا البرنامج التعليمي ، سنرى كيفية قراءة بيانات CSV وتحميلها في PySpark DataFrame. سنناقش أيضًا تحميل ملفات CSV متعددة في إطار بيانات واحد في وقت واحد مع أمثلة.

Pyspark.sql.DataFrameReader.csv ()

تُستخدم هذه الطريقة لقراءة البيانات من ملف / ملفات CSV وتخزينها في PySpark DataFrame. يأخذ الخيارات أثناء قراءة CSV في DataFrame. سنناقش الخيارات المختلفة مع أمثلة بالتفصيل. أثناء تمرير أكثر من ملف CSV ، من المهم تمرير أسماء الملفات بامتداد في قائمة مفصولة بواسطة عامل الفاصلة. إذا كنت تقرأ ملف CSV واحدًا فقط ، فلا داعي لتوفير اسم الملف في القائمة.

بناء الجملة:







ملف واحد - spark_app.read.csv ('file.csv' ، خيارات ...)

ملفات متعددة - spark_app.read.csv (['file1.csv' ، 'file2.csv' ، ...] ، خيارات ...)



يمكن أيضًا فصل الخيارات وأسماء الملفات.



ملف واحد - spark_app.read.options (خيارات…) .csv ('file.csv')





ملفات متعددة - spark_app.read.options (خيارات ...) .csv (['file1.csv'، 'file2.csv'، ...])

قم بتثبيت مكتبة PySpark قبل تنفيذ الأمثلة التالية.



نقطة تثبيت pyspark

بعد التثبيت الناجح ، يمكنك رؤية الإخراج على النحو التالي:

السيناريو 1: قراءة رأس ملف CSV

دعنا ننشئ ملف CSV باسم 'person_skill.csv' مع 5 سجلات موضحة في ما يلي وقم بتحميله في PySpark DataFrame:

يتم استخدام معلمة الرأس لتحديد أسماء الأعمدة في PySpark DataFrame. يأخذ قيمة منطقية. إذا كانت 'True' ، يتم تحديد أسماء الأعمدة الفعلية الموجودة في ملف CSV في DataFrame ، وإلا فسيتم تحديد c0 و c1 و c2… وستكون أسماء الأعمدة الفعلية صفًا. من الأفضل ممارسة ضبط معلمة الرأس على 'صواب'.

مثال 1: الرأس = صحيح

استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# قم بتحميل ملف csv المسمى - person_skill.csv بالمهارات باستخدام تسميات الأعمدة بالرأس

المهارات = linuxhint_spark_app.read.csv ( 'person_skill.csv' و رأس = صحيح)

# عرض DataFrame

Skills.show ()

انتاج:

توضيح:

يمكننا أن نرى أن PySpark DataFrame تم إنشاؤه من ملف CSV بأعمدة وصفوف محددة.

استخدم الأمر التالي للتحقق من الأعمدة:

المهارات

مثال 2: Header = False

استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# قم بتحميل ملف csv المسمى - person_skill.csv بالمهارات باستخدام تسميات الأعمدة بدون رأس

المهارات = linuxhint_spark_app.read.csv ( 'person_skill.csv' و رأس = خطأ)

# عرض DataFrame

Skills.show ()

انتاج:

توضيح:

يمكننا أن نرى أن PySpark DataFrame تم إنشاؤه من ملف CSV بدون أعمدة موجودة.

أيضًا ، يتم تخزين الأعمدة الموجودة كصفوف في PySpark DataFrame.

المهارات

باستخدام Read.options.csv ()

الآن ، نقرأ ملف CSV باستخدام طريقة read.options.csv (). هنا ، نحتاج إلى تمرير الخيارات مثل المحدد والرأس وما إلى ذلك في الخيارات كوسائط واسم ملف في csv (). دعنا نمرر معلمة الرأس عن طريق تعيينها على 'True'.

السيناريو 1:

استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# استخدام read.options.csv ()

المهارات = linuxhint_spark_app.read. خيارات ( رأس = صحيح) .csv ( 'person_skill.csv' )

# عرض DataFrame

Skills.show ()

انتاج:

السيناريو 2: قراءة محدد ملف CSV

تأخذ معلمة المحدد الحرف الذي يتم استخدامه لفصل كل حقل. تأخذ فاصلة (،) بشكل افتراضي. لنستخدم نفس ملف CSV المستخدم في السيناريو الأول ونمرر الفاصلة ('،') كمحدد.

استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# استخدام read.options.csv () مع المحدد مع العنوان

المهارات = linuxhint_spark_app.read. خيارات ( رأس = صحيح ، المحدد = '،' ) .csv ( 'person_skill.csv' )

# عرض DataFrame

Skills.show ()

انتاج:

قراءة ملفات متعددة

حتى الآن ، كنا نقرأ ملف CSV واحد. دعونا نرى كيفية قراءة أكثر من ملف CSV. في هذا السيناريو ، يتم إلحاق الصفوف الموجودة في ملفات متعددة في PySpark DataFrame واحد. نحتاج فقط إلى تمرير أسماء الملفات في قائمة داخل الطريقة.

مثال:

لنحصل على ملفات CSV التالية المسماة 'person_skill.csv' و 'person_skill2.csv' بالبيانات التالية:


اقرأ ملفي CSV هذين وقم بتخزينهما في PySpark DataFrame واحد.

استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# قم بتحميل ملفي CSV باسم - person_skill.csv و person_skill2.csv في مهارات باستخدام تسميات الأعمدة مع الرأس

المهارات = linuxhint_spark_app.read.csv ([ 'person_skill.csv' و 'person_skill2.csv' ] ، سبتمبر = '،' و رأس = صحيح)

Skills.show ()

انتاج:

توضيح:

يحتوي ملف CSV الأول على 6 سجلات والثاني يحتوي على 3 سجلات. يمكننا أن نرى أنه يتم تحميل أول CSV في DataFrame أولاً. ثم يتم تحميل ملف CSV الثاني. أخيرًا ، يحتفظ PySpark DataFrame بـ 9 سجلات.

خاتمة

قراءة ملف CSV في PySpark DataFrame أمر بسيط للغاية باستخدام طريقة pyspark.sql.DataFrameReader.csv (). يمكن تمرير معلمات الرأس والمحدد إلى هذه الطريقة لتحديد الأعمدة والتنسيق. يدعم PySpark أيضًا قراءة ملفات CSV متعددة في وقت واحد باستخدام الطرق المتوفرة جنبًا إلى جنب مع خياراتها. في هذه المقالة ، رأينا الأمثلة من خلال النظر في خيارات مختلفة. أيضًا ، لقد رأينا طريقتين لتمرير الخيارات إلى الطريقة.