PySpark Read.Parquet()

Pyspark Read Parquet



I PySpark skriver write.parquet()-funksjonen DataFrame til parkettfilen og read.parquet() leser parkettfilen til PySpark DataFrame eller en annen DataSource. For å behandle kolonnene i Apache Spark raskt og effektivt, må vi komprimere dataene. Datakomprimering sparer minnet vårt og alle kolonnene konverteres til flatt nivå. Det betyr at lageret på flatt søylenivå eksisterer. Filen som lagrer disse er kjent som PARKETT-filen.

I denne guiden vil vi hovedsakelig fokusere på å lese/laste parkettfilen inn i PySpark DataFrame/SQL ved hjelp av read.parquet()-funksjonen som er tilgjengelig i pyspark.sql.DataFrameReader-klassen.

Emne for innhold:







Få parkettfilen



Les parkettfilen til PySpark DataFrame



Les parkettfilen til PySpark SQL





Pyspark.sql.DataFrameReader.parquet()

Denne funksjonen brukes til å lese parkettfilen og laste den inn i PySpark DataFrame. Den tar banen/filnavnet til parkettfilen. Vi kan ganske enkelt bruke read.parquet() funksjonen siden dette er den generiske funksjonen.

Syntaks:



La oss se syntaksen til read.parquet():

spark_app.read.parquet(filnavn.parkett/bane)

Installer først PySpark-modulen ved å bruke pip-kommandoen:

pip installer pyspark

Få parkettfilen

For å lese en parkettfil trenger du dataene der parkettfilen er generert fra disse dataene. I denne delen skal vi se hvordan du genererer en parkettfil fra PySpark DataFrame.

La oss lage en PySpark DataFrame med 5 poster og skrive dette til 'industry_parquet' parkettfilen.

importere pyspark

fra pyspark.sql importer SparkSession, Row

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

# opprett datarammen som lagrer bransjedetaljer

industry_df = linuxhint_spark_app.createDataFrame([Row(Type= 'Jordbruk' ,Areal= 'USA' ,
Vurdering= 'Varmt' ,Total_ansatte= 100 ),

Rad(Type= 'Jordbruk' ,Areal= 'India' ,Vurdering= 'Varmt' ,Total_ansatte= 200 ),

Rad(Type= 'Utvikling' ,Areal= 'USA' ,Vurdering= 'Varm' ,Total_ansatte= 100 ),

Rad(Type= 'Utdanning' ,Areal= 'USA' ,Vurdering= 'Kul' ,Total_ansatte= 400 ),

Rad(Type= 'Utdanning' ,Areal= 'USA' ,Vurdering= 'Varm' ,Total_ansatte= tjue )

])

# Faktisk dataramme

industry_df.show()

# Skriv industry_df til parkettfilen

industry_df.coalesce( 1 ).skrive.parkett( 'industri_parkett' )

Produksjon:

Dette er DataFrame som har 5 poster.

Det lages en parkettfil for forrige DataFrame. Her er filnavnet vårt med en utvidelse 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet'. Vi bruker denne filen i hele opplæringen.

Les parkettfilen til PySpark DataFrame

Vi har parkettfilen. La oss lese denne filen ved å bruke read.parquet()-funksjonen og laste den inn i PySpark DataFrame.

importere pyspark

fra pyspark.sql importer SparkSession, Row

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

# Les parkettfilen inn i dataramme_fra_parkettobjekt.

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

# Vis dataframe_from_parquet-DataFrame

dataframe_from_parquet.show()

Produksjon:

Vi viser DataFrame ved å bruke show()-metoden som ble opprettet fra parkettfilen.

SQL-spørringer med parkettfil

Etter å ha lastet inn i DataFrame kan det være mulig å lage SQL-tabellene og vise dataene som finnes i DataFrame. Vi må lage en TEMPORARY VIEW og bruke SQL-kommandoene til å returnere postene fra DataFrame som er opprettet fra parkettfilen.

Eksempel 1:

Lag en midlertidig visning kalt 'Sektorer' og bruk SELECT-kommandoen for å vise postene i DataFrame. Du kan referere til dette opplæringen som forklarer hvordan du oppretter en VIEW i Spark – SQL.

importere pyspark

fra pyspark.sql importer SparkSession, Row

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

# Les parkettfilen inn i dataramme_fra_parkettobjekt.

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

# Lag visning fra parkettfilen ovenfor kalt - 'Sektorer'

dataframe_from_parquet.createOrReplaceTempView( 'Sektorer' )

# Spørring for å vise alle poster fra sektorene

linuxhint_spark_app.sql( 'velg * fra sektorer' ).forestilling()

Produksjon:

Eksempel 2:

Bruk den forrige VIEW, skriv SQL-spørringen:

  1. For å vise alle poster fra sektorene som tilhører 'India'.
  2. For å vise alle poster fra sektorene med en ansatt som er større enn 100.
# Spørring for å vise alle poster fra sektorene som tilhører 'India'.

linuxhint_spark_app.sql( 'velg * fra sektorer der Area='India'' ).forestilling()

# Spørsmål for å vise alle poster fra sektorene med ansatte over 100

linuxhint_spark_app.sql( 'velg * fra sektorer hvor totalt_ansatte>100' ).forestilling()

Produksjon:

Det er bare én post med område som er 'India' og to poster med ansatte som er større enn 100.

Les parkettfilen til PySpark SQL

Først må vi lage en VIEW ved å bruke CREATE-kommandoen. Ved å bruke nøkkelordet 'path' i SQL-spørringen kan vi lese parkettfilen til Spark SQL. Etter banen må vi spesifisere filnavnet/plasseringen til filen.

Syntaks:

spark_app.sql( 'OPPRETT MIDLERVIS VISNING view_name VED HJELP AV parkettalternativer (bane ' filnavn.parkett ')' )

Eksempel 1:

Lag en midlertidig visning kalt 'Sector2' og les parkettfilen inn i den. Bruk sql()-funksjonen, skriv select-spørringen for å vise alle poster som finnes i visningen.

importere pyspark

fra pyspark.sql importer SparkSession, Row

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

# Les parkettfilen inn i Spark-SQL

linuxhint_spark_app.sql( 'LAG MIDLERTIGT VISNING Sektor2 VED HJELP AV parkettalternativer (sti' part-00000-ff70f69d-f1fb- 4450 -b4b4-dfd5a8d6c7ad-c000.snappy.parkett ')' )

# Spørring for å vise alle poster fra Sector2

linuxhint_spark_app.sql( 'velg * fra sektor2' ).forestilling()

Produksjon:

Eksempel 2:

Bruk forrige VIEW og skriv spørringen for å vise alle poster med vurderingen 'Hot' eller 'Cool'.

# Spørring for å vise alle poster fra Sector2 med Rating- Hot eller Cool.

linuxhint_spark_app.sql( 'velg * fra Sector2 hvor Rating='Hot' OR Rating='Cool'' ).forestilling()

Produksjon:

Det er tre plater med vurderingen 'Hot' eller 'Cool'.

Konklusjon

I PySpark skriver write.parquet()-funksjonen DataFrame til parkettfilen. Read.parquet()-funksjonen leser parkettfilen til PySpark DataFrame eller en annen datakilde. Vi lærte å lese parkettfilen inn i PySpark DataFrame og inn i PySpark-tabellen. Som en del av denne opplæringen diskuterte vi også hvordan du oppretter tabellene fra PySpark DataFrame og filtrerer dataene ved å bruke WHERE-klausulen.