PySpark Read.Parquet()

Pyspark Read Parquet



Programmā PySpark funkcija write.parquet() ieraksta DataFrame parketa failā un read.parquet() nolasa parketa failu PySpark DataFrame vai jebkurā citā datu avotā. Lai ātri un efektīvi apstrādātu Apache Spark kolonnas, mums ir jāsaspiež dati. Datu saspiešana ietaupa mūsu atmiņu, un visas kolonnas tiek pārveidotas plakanā līmenī. Tas nozīmē, ka pastāv plakanās kolonnas līmeņa krātuve. Fails, kurā tie tiek glabāti, ir pazīstams kā PARQUET fails.

Šajā rokasgrāmatā mēs galvenokārt pievērsīsimies parketa faila lasīšanai/ielādēšanai PySpark DataFrame/SQL, izmantojot funkciju read.parquet(), kas ir pieejama klasē pyspark.sql.DataFrameReader.

Satura tēma:







Iegūstiet parketa failu



Izlasiet parketa failu PySpark DataFrame



Izlasiet parketa failu PySpark SQL





Pyspark.sql.DataFrameReader.parquet()

Šī funkcija tiek izmantota, lai nolasītu parketa failu un ielādētu to PySpark DataFrame. Tas aizņem parketa faila ceļu/faila nosaukumu. Mēs varam vienkārši izmantot funkciju read.parquet(), jo šī ir vispārīgā funkcija.

Sintakse:



Apskatīsim read.parquet() sintaksi:

spark_app.read.parquet(faila_nosaukums.parkets/ceļš)

Vispirms instalējiet PySpark moduli, izmantojot komandu pip:

pip instalēt pyspark

Iegūstiet parketa failu

Lai lasītu parketa failu, ir nepieciešami dati, kuros parketa fails ir ģenerēts no šiem datiem. Šajā daļā mēs redzēsim, kā ģenerēt parketa failu no PySpark DataFrame.

Izveidosim PySpark DataFrame ar 5 ierakstiem un ierakstīsim to parketa failā “industry_parquet”.

importēt pyspark

no pyspark.sql importēt SparkSession,Row

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# izveidojiet datu rāmi, kurā tiek glabāta nozares informācija

Industry_df = linuxhint_spark_app.createDataFrame([Row(Type= 'lauksaimniecība' ,platība= 'ASV' ,
Vērtējums= 'karsts' ,Kopā_darbinieki= 100 ),

Rinda(Tips= 'lauksaimniecība' ,platība= 'Indija' ,Vērtējums= 'karsts' ,Kopā_darbinieki= 200 ),

Rinda(Tips= 'Attīstība' ,platība= 'ASV' ,Vērtējums= 'silts' ,Kopā_darbinieki= 100 ),

Rinda(Tips= 'Izglītība' ,platība= 'ASV' ,Vērtējums= 'Forši' ,Kopā_darbinieki= 400 ),

Rinda(Tips= 'Izglītība' ,platība= 'ASV' ,Vērtējums= 'silts' ,Kopā_darbinieki= divdesmit )

])

# Faktiskais datu rāmis

Industry_df.show()

# Ierakstiet nozares_df parketa failā

Industry_df.coalesce( 1 ).write.parquet( 'industry_parkets' )

Izvade:

Šis ir DataFrame, kurā ir 5 ieraksti.

Iepriekšējam DataFrame tiek izveidots parketa fails. Šeit mūsu faila nosaukums ar paplašinājumu ir “part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet”. Mēs izmantojam šo failu visā apmācībā.

Izlasiet parketa failu PySpark DataFrame

Mums ir parketa vīle. Izlasīsim šo failu, izmantojot funkciju read.parquet() un ielādēsim to PySpark DataFrame.

importēt pyspark

no pyspark.sql importēt SparkSession,Row

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# Lasiet parketa failu objektā dataframe_from_parquet.

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

# Parādīt dataframe_from_parquet-DataFrame

dataframe_from_parquet.show()

Izvade:

Mēs parādām DataFrame, izmantojot metodi show(), kas tika izveidota no parketa faila.

SQL vaicājumi ar parketa failu

Pēc ielādes DataFrame var izveidot SQL tabulas un parādīt datus, kas atrodas DataFrame. Mums ir jāizveido PAGAIDU SKATS un jāizmanto SQL komandas, lai atgrieztu ierakstus no DataFrame, kas izveidots no parketa faila.

1. piemērs:

Izveidojiet pagaidu skatu ar nosaukumu “Sectors” un izmantojiet komandu SELECT, lai parādītu ierakstus DataFrame. Jūs varat atsaukties uz šo pamācība kas izskaidro, kā izveidot SKATU programmā Spark — SQL.

importēt pyspark

no pyspark.sql importēt SparkSession,Row

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# Lasiet parketa failu objektā dataframe_from_parquet.

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

# Izveidojiet skatu no iepriekš minētā parketa faila ar nosaukumu 'Sectors'

dataframe_from_parquet.createOrReplaceTempView( 'Sektori' )

# Vaicājums, lai parādītu visus ierakstus no sektoriem

linuxhint_spark_app.sql( 'izvēlēties * no sektoriem' ).show()

Izvade:

2. piemērs:

Izmantojot iepriekšējo VIEW, ierakstiet SQL vaicājumu:

  1. Lai parādītu visus ierakstus no nozarēm, kas pieder “Indijai”.
  2. Lai parādītu visus ierakstus no nozarēm ar darbinieku, kas ir lielāks par 100.
# Vaicājums, lai parādītu visus ierakstus no nozarēm, kas pieder 'Indijai'.

linuxhint_spark_app.sql( 'izvēlieties * no sektoriem, kur apgabals='Indija'' ).show()

# Vaicājums, lai parādītu visus ierakstus no nozarēm, kurās darbinieku skaits pārsniedz 100

linuxhint_spark_app.sql( 'izvēlieties * no nozarēm, kurās kopējais_darbinieku skaits > 100' ).show()

Izvade:

Ir tikai viens ieraksts ar apgabalu, kas ir “Indija”, un divi ieraksti ar darbiniekiem, kas ir lielāki par 100.

Izlasiet parketa failu PySpark SQL

Pirmkārt, mums ir jāizveido VIEW, izmantojot komandu CREATE. Izmantojot atslēgvārdu “ceļš” SQL vaicājumā, mēs varam nolasīt parketa failu Spark SQL. Pēc ceļa mums jānorāda faila nosaukums/atrašanās vieta.

Sintakse:

spark_app.sql( 'IZVEIDOT PAGAIDU SKATU skatu_nosaukums, IZMANTOJOT parketa OPTIONS (ceļš ' faila_nosaukums.parkets ')' )

1. piemērs:

Izveidojiet pagaidu skatu ar nosaukumu “Sector2” un izlasiet tajā parketa failu. Izmantojot funkciju sql(), ierakstiet atlases vaicājumu, lai parādītu visus skatā esošos ierakstus.

importēt pyspark

no pyspark.sql importēt SparkSession,Row

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# Lasiet parketa failu Spark-SQL

linuxhint_spark_app.sql( 'IZVEIDOT PAGAIDU SKATU Sector2, IZMANTOJOT parketa OPTIONS (ceļš' daļa-00000-ff70f69d-f1fb- 4450 -b4b4-dfd5a8d6c7ad-c000.snappy.parquet ')' )

# Vaicājums, lai parādītu visus ierakstus no sektora2

linuxhint_spark_app.sql( 'izvēlēties * no 2. sektora' ).show()

Izvade:

2. piemērs:

Izmantojiet iepriekšējo SKATĪJUMU un ierakstiet vaicājumu, lai parādītu visus ierakstus ar vērtējumu “Karsts” vai “Cool”.

# Vaicājums, lai parādītu visus ierakstus no 2. sektora ar vērtējumu — Hot vai Cool.

linuxhint_spark_app.sql( 'izvēlieties * no 2. sektora, kur Vērtējums = 'Karsts' VAI Vērtējums = 'Forši'' ).show()

Izvade:

Ir trīs ieraksti ar vērtējumu “Hot” vai “Cool”.

Secinājums

Programmā PySpark funkcija write.parquet() ieraksta DataFrame parketa failā. Funkcija read.parquet() nolasa parketa failu PySpark DataFrame vai jebkurā citā datu avotā. Mēs uzzinājām, kā nolasīt parketa failu PySpark DataFrame un PySpark tabulā. Šīs apmācības ietvaros mēs arī apspriedām, kā izveidot tabulas no PySpark DataFrame un filtrēt datus, izmantojot WHERE klauzulu.