PySpark Read.Parquet()

Pyspark Read Parquet



PySpark میں، write.parquet() فنکشن ڈیٹا فریم کو پارکیٹ فائل میں لکھتا ہے اور read.parquet() پارکیٹ فائل کو PySpark ڈیٹا فریم یا کسی دوسرے ڈیٹا سورس میں پڑھتا ہے۔ Apache Spark میں کالموں کو تیزی سے اور مؤثر طریقے سے پروسیس کرنے کے لیے، ہمیں ڈیٹا کو کمپریس کرنے کی ضرورت ہے۔ ڈیٹا کمپریشن ہماری میموری کو بچاتا ہے اور تمام کالم فلیٹ لیول میں تبدیل ہو جاتے ہیں۔ اس کا مطلب ہے کہ فلیٹ کالم لیول اسٹوریج موجود ہے۔ جو فائل ان کو اسٹور کرتی ہے اسے PARQUET فائل کہا جاتا ہے۔

اس گائیڈ میں، ہم بنیادی طور پر read.parquet() فنکشن کا استعمال کرتے ہوئے PySpark DataFrame/SQL میں پارکیٹ فائل کو پڑھنے/لوڈ کرنے پر توجہ مرکوز کریں گے جو pyspark.sql.DataFrameReader کلاس میں دستیاب ہے۔

مواد کا موضوع:







پارکیٹ فائل حاصل کریں۔



PySpark ڈیٹا فریم پر پارکیٹ فائل پڑھیں



PySpark SQL پر پارکیٹ فائل پڑھیں





Pyspark.sql.DataFrameReader.parquet()

اس فنکشن کا استعمال پارکیٹ فائل کو پڑھنے اور اسے PySpark ڈیٹا فریم میں لوڈ کرنے کے لیے کیا جاتا ہے۔ یہ پارکیٹ فائل کا راستہ/فائل کا نام لیتا ہے۔ ہم صرف read.parquet() فنکشن استعمال کرسکتے ہیں کیونکہ یہ عام فنکشن ہے۔

نحو:



آئیے read.parquet(): کا نحو دیکھتے ہیں۔

spark_app.read.parquet(file_name.parquet/path)

سب سے پہلے، pip کمانڈ کا استعمال کرتے ہوئے PySpark ماڈیول انسٹال کریں:

pip انسٹال pyspark

پارکیٹ فائل حاصل کریں۔

پارکیٹ فائل کو پڑھنے کے لیے، آپ کو اس ڈیٹا کی ضرورت ہے جس میں اس ڈیٹا سے پارکیٹ فائل تیار کی گئی ہے۔ اس حصے میں، ہم دیکھیں گے کہ PySpark DataFrame سے ایک پارکیٹ فائل کیسے تیار کی جاتی ہے۔

آئیے 5 ریکارڈز کے ساتھ ایک PySpark ڈیٹا فریم بنائیں اور اسے 'industry_parquet' پارکیٹ فائل میں لکھیں۔

pyspark درآمد کریں۔

pyspark.sql سے SparkSession، Row درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

# ڈیٹا فریم بنائیں جو صنعت کی تفصیلات کو محفوظ کرتا ہے۔

industry_df = linuxhint_spark_app.createDataFrame([Row(Type= 'زراعت' رقبہ = 'امریکا' ,
درجہ بندی = 'گرم' کل_ملازمین = 100 )

قطار (قسم = 'زراعت' رقبہ = 'ہندوستان' درجہ بندی = 'گرم' کل_ملازمین = 200 )

قطار (قسم = 'ترقی' رقبہ = 'امریکا' درجہ بندی = 'گرم' کل_ملازمین = 100 )

قطار (قسم = 'تعلیم' رقبہ = 'امریکا' درجہ بندی = 'ٹھنڈا' کل_ملازمین = 400 )

قطار (قسم = 'تعلیم' رقبہ = 'امریکا' درجہ بندی = 'گرم' کل_ملازمین = بیس )

])

# اصل ڈیٹا فریم

صنعت_df.show()

#پارکیٹ فائل میں انڈسٹری_ڈی ایف لکھیں۔

صنعت_df.coalesce( 1 .write.parquet( 'صنعت_پارکیٹ' )

آؤٹ پٹ:

یہ ڈیٹا فریم ہے جو 5 ریکارڈ رکھتا ہے۔

پچھلے ڈیٹا فریم کے لیے ایک پارکیٹ فائل بنائی گئی ہے۔ یہاں، ایکسٹینشن کے ساتھ ہماری فائل کا نام 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet' ہے۔ ہم اس فائل کو پورے ٹیوٹوریل میں استعمال کرتے ہیں۔

PySpark ڈیٹا فریم پر پارکیٹ فائل پڑھیں

ہمارے پاس لکڑی کی فائل ہے۔ آئیے اس فائل کو read.parquet() فنکشن کا استعمال کرتے ہوئے پڑھیں اور اسے PySpark ڈیٹا فریم میں لوڈ کریں۔

pyspark درآمد کریں۔

pyspark.sql سے SparkSession، Row درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

# پارکیٹ فائل کو ڈیٹا فریم_فرم_پارکیٹ آبجیکٹ میں پڑھیں۔

dataframe_from_parquet=linuxhint_spark_app.read.parquet( 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet' )

# ڈیٹا فریم_from_parquet-DataFrame دکھائیں۔

dataframe_from_parquet.show()

آؤٹ پٹ:

ہم show() طریقہ استعمال کرتے ہوئے ڈیٹا فریم ڈسپلے کرتے ہیں جو پارکیٹ فائل سے بنایا گیا تھا۔

Parquet فائل کے ساتھ SQL سوالات

ڈیٹا فریم میں لوڈ کرنے کے بعد، ایس کیو ایل ٹیبلز بنانا اور ڈیٹا فریم میں موجود ڈیٹا کو ڈسپلے کرنا ممکن ہو سکتا ہے۔ ہمیں ایک عارضی منظر بنانے کی ضرورت ہے اور ڈیٹا فریم سے ریکارڈ واپس کرنے کے لیے SQL کمانڈز کا استعمال کرنا ہوگا جو پارکیٹ فائل سے بنایا گیا ہے۔

مثال 1:

'سیکٹرز' کے نام سے ایک عارضی منظر بنائیں اور ڈیٹا فریم میں ریکارڈ ڈسپلے کرنے کے لیے SELECT کمانڈ استعمال کریں۔ آپ اس کا حوالہ دے سکتے ہیں۔ سبق جو اسپارک – ایس کیو ایل میں ویو بنانے کا طریقہ بتاتا ہے۔

pyspark درآمد کریں۔

pyspark.sql سے SparkSession، Row درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

# پارکیٹ فائل کو ڈیٹا فریم_فرم_پارکیٹ آبجیکٹ میں پڑھیں۔

dataframe_from_parquet=linuxhint_spark_app.read.parquet( 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet' )

# اوپر والی پارکیٹ فائل سے منظر بنائیں جس کا نام ہے - 'سیکٹرز'

dataframe_from_parquet.createOrReplaceTempView( 'سیکٹرز' )

# سیکٹرز سے تمام ریکارڈ ظاہر کرنے کے لیے سوال

linuxhint_spark_app.sql( 'سیکٹرز سے * منتخب کریں' .show()

آؤٹ پٹ:

مثال 2:

پچھلے ویو کا استعمال کرتے ہوئے، SQL استفسار لکھیں:

  1. 'انڈیا' سے تعلق رکھنے والے سیکٹرز کے تمام ریکارڈز کو ظاہر کرنے کے لیے۔
  2. 100 سے زیادہ ملازمین کے ساتھ سیکٹرز کے تمام ریکارڈ ڈسپلے کرنا۔
# 'انڈیا' سے تعلق رکھنے والے شعبوں کے تمام ریکارڈز کو ظاہر کرنے کے لیے سوال۔

linuxhint_spark_app.sql( 'ان شعبوں سے * منتخب کریں جہاں کا علاقہ = 'انڈیا'' .show()

# 100 سے زیادہ ملازمین والے سیکٹرز سے تمام ریکارڈ ظاہر کرنے کے لیے سوال

linuxhint_spark_app.sql( 'ان شعبوں سے * منتخب کریں جہاں کل_ملازمین>100' .show()

آؤٹ پٹ:

رقبے کے ساتھ صرف ایک ریکارڈ ہے جو 'انڈیا' ہے اور ملازمین کے ساتھ دو ریکارڈ جو 100 سے زیادہ ہیں۔

PySpark SQL پر پارکیٹ فائل پڑھیں

سب سے پہلے، ہمیں CREATE کمانڈ کا استعمال کرتے ہوئے ایک VIEW بنانے کی ضرورت ہے۔ ایس کیو ایل استفسار کے اندر 'پاتھ' کلیدی لفظ کا استعمال کرتے ہوئے، ہم اسپارک ایس کیو ایل میں پارکیٹ فائل پڑھ سکتے ہیں۔ راستے کے بعد، ہمیں فائل کا نام/مقام بتانے کی ضرورت ہے۔

نحو:

spark_app.sql( 'پارکیٹ آپشنز کا استعمال کرتے ہوئے عارضی منظر نام کا منظر بنائیں (راستہ' file_name.parquet ')' )

مثال 1:

'Sector2' کے نام سے ایک عارضی منظر بنائیں اور اس میں لکڑی کی فائل پڑھیں۔ sql() فنکشن کا استعمال کرتے ہوئے، ویو میں موجود تمام ریکارڈز کو ظاہر کرنے کے لیے سلیکٹ سوال لکھیں۔

pyspark درآمد کریں۔

pyspark.sql سے SparkSession، Row درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

# پارکیٹ فائل کو Spark- SQL میں پڑھیں

linuxhint_spark_app.sql( 'پارکیٹ آپشنز کا استعمال کرتے ہوئے عارضی ویو سیکٹر 2 بنائیں (راستہ' part-00000-ff70f69d-f1fb- 4450 -b4b4-dfd5a8d6c7ad-c000.snappy.parquet ')' )

# سیکٹر 2 سے تمام ریکارڈ ظاہر کرنے کے لیے سوال

linuxhint_spark_app.sql( 'سیکٹر 2 سے * منتخب کریں' .show()

آؤٹ پٹ:

مثال 2:

پچھلے ویو کا استعمال کریں اور 'گرم' یا 'ٹھنڈا' کی درجہ بندی کے ساتھ تمام ریکارڈ دکھانے کے لیے استفسار لکھیں۔

# درجہ بندی کے ساتھ سیکٹر 2 کے تمام ریکارڈز کو ظاہر کرنے کے لیے سوال- گرم یا ٹھنڈا۔

linuxhint_spark_app.sql( 'سیکٹر 2 سے * کو منتخب کریں جہاں درجہ بندی = 'گرم' یا درجہ بندی = 'ٹھنڈا'' .show()

آؤٹ پٹ:

'گرم' یا 'ٹھنڈا' کی درجہ بندی کے ساتھ تین ریکارڈز ہیں۔

نتیجہ

PySpark میں، write.parquet() فنکشن ڈیٹا فریم کو پارکیٹ فائل میں لکھتا ہے۔ read.parquet() فنکشن پارکیٹ فائل کو PySpark ڈیٹا فریم یا کسی دوسرے ڈیٹا سورس پر پڑھتا ہے۔ ہم نے سیکھا کہ پارکیٹ فائل کو PySpark ڈیٹا فریم اور PySpark ٹیبل میں کیسے پڑھنا ہے۔ اس ٹیوٹوریل کے حصے کے طور پر، ہم نے PySpark DataFrame سے ٹیبل بنانے اور WHERE شق کا استعمال کرتے ہوئے ڈیٹا کو فلٹر کرنے کا طریقہ بھی بتایا۔