PySpark Read.Parquet()

Pyspark Read Parquet



I PySpark skriver funktionen write.parquet() DataFrame til parketfilen, og read.parquet() læser parketfilen til PySpark DataFrame eller enhver anden DataSource. For at behandle kolonnerne i Apache Spark hurtigt og effektivt skal vi komprimere dataene. Datakomprimering gemmer vores hukommelse, og alle kolonnerne konverteres til fladt niveau. Det betyder, at lageret på flade søjleniveau eksisterer. Filen som gemmer disse er kendt som PARQUET-filen.

I denne guide vil vi hovedsageligt fokusere på at læse/indlæse parketfilen i PySpark DataFrame/SQL ved hjælp af read.parquet()-funktionen, som er tilgængelig i pyspark.sql.DataFrameReader-klassen.

Emne for indhold:







Hent parketfilen



Læs parketfilen til PySpark DataFrame



Læs Parketfilen til PySpark SQL





Pyspark.sql.DataFrameReader.parquet()

Denne funktion bruges til at læse parketfilen og indlæse den i PySpark DataFrame. Det tager stien/filnavnet til parketfilen. Vi kan simpelthen bruge read.parquet()-funktionen, da dette er den generiske funktion.

Syntaks:



Lad os se syntaksen for read.parquet():

spark_app.read.parquet(filnavn.parket/sti)

Først skal du installere PySpark-modulet ved hjælp af pip-kommandoen:

pip installer pyspark

Hent parketfilen

For at læse en parketfil skal du bruge de data, hvori parketfilen er genereret ud fra disse data. I denne del vil vi se, hvordan man genererer en parketfil fra PySpark DataFrame.

Lad os oprette en PySpark DataFrame med 5 poster og skrive dette til 'industry_parquet' parketfilen.

importere pyspark

fra pyspark.sql importer SparkSession, Row

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# opret den dataramme, der gemmer industridetaljer

industry_df = linuxhint_spark_app.createDataFrame([Row(Type= 'Landbrug' ,Areal= 'USA' ,
Bedømmelse= 'Hed' ,Samlet_ansatte= 100 ),

Række(Type= 'Landbrug' ,Areal= 'Indien' ,Rating= 'Hed' ,Samlet_ansatte= 200 ),

Række(Type= 'Udvikling' ,Areal= 'USA' ,Rating= 'Varm' ,Samlet_ansatte= 100 ),

Række(Type= 'Uddannelse' ,Areal= 'USA' ,Rating= 'Fedt nok' ,Samlet_ansatte= 400 ),

Række(Type= 'Uddannelse' ,Areal= 'USA' ,Rating= 'Varm' ,Samlet_ansatte= tyve )

])

# Faktisk DataFrame

industry_df.show()

# Skriv industry_df til parketfilen

industry_df.coalesce( 1 ).write.parket( 'industri_parket' )

Produktion:

Dette er DataFrame, der har 5 poster.

Der oprettes en parketfil til den tidligere DataFrame. Her er vores filnavn med en endelse 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet'. Vi bruger denne fil i hele vejledningen.

Læs parketfilen til PySpark DataFrame

Vi har parketfilen. Lad os læse denne fil ved hjælp af read.parquet()-funktionen og indlæse den i PySpark DataFrame.

importere pyspark

fra pyspark.sql importer SparkSession, Row

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# Læs parketfilen ind i dataframe_from_parquet-objekt.

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

# Vis dataframe_from_parquet-DataFrame

dataramme_fra_parket.show()

Produktion:

Vi viser DataFrame ved hjælp af show() metoden, som blev oprettet fra parketfilen.

SQL-forespørgsler med parketfil

Efter indlæsning i DataFrame kan det være muligt at oprette SQL-tabellerne og vise de data, der er til stede i DataFrame. Vi skal oprette en TEMPORARY VIEW og bruge SQL-kommandoerne til at returnere posterne fra DataFrame, som er oprettet fra parketfilen.

Eksempel 1:

Opret en midlertidig visning med navnet 'Sektorer', og brug SELECT-kommandoen til at vise posterne i DataFrame. Du kan henvise til dette tutorial der forklarer, hvordan man opretter en VIEW i Spark – SQL.

importere pyspark

fra pyspark.sql importer SparkSession, Row

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# Læs parketfilen ind i dataframe_from_parquet-objekt.

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

# Opret visning fra ovenstående parketfil med navnet - 'Sektorer'

dataframe_from_parquet.createOrReplaceTempView( 'Sektorer' )

# Forespørgsel for at vise alle poster fra sektorerne

linuxhint_spark_app.sql( 'vælg * fra sektorer' ).at vise()

Produktion:

Eksempel 2:

Brug den forrige VIEW, skriv SQL-forespørgslen:

  1. For at vise alle poster fra de sektorer, der hører til 'Indien'.
  2. For at vise alle poster fra sektorerne med en medarbejder, der er større end 100.
# Forespørgsel om at vise alle poster fra de sektorer, der tilhører 'Indien'.

linuxhint_spark_app.sql( 'vælg * fra sektorer, hvor Area='Indien'' ).at vise()

# Forespørgsel om at få vist alle poster fra sektorerne med medarbejdere på over 100

linuxhint_spark_app.sql( 'vælg * fra Sektorer, hvor Total_employees>100' ).at vise()

Produktion:

Der er kun én rekord med område, som er 'Indien', og to poster med ansatte, der er større end 100.

Læs Parketfilen til PySpark SQL

Først skal vi oprette en VIEW ved hjælp af CREATE-kommandoen. Ved at bruge søgeordet 'sti' i SQL-forespørgslen kan vi læse parketfilen til Spark SQL. Efter stien skal vi angive filnavnet/placeringen af ​​filen.

Syntaks:

spark_app.sql( 'OPRET MIDLERTIDIG VISNING view_name VED HJÆLP AF parketMULIGHEDER (sti ' filnavn.parket ')' )

Eksempel 1:

Opret en midlertidig visning med navnet 'Sector2', og læs parketfilen ind i den. Brug sql()-funktionen til at skrive select-forespørgslen for at vise alle poster, der er til stede i visningen.

importere pyspark

fra pyspark.sql importer SparkSession, Row

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# Læs parketfilen ind i Spark-SQL

linuxhint_spark_app.sql( 'OPRET MIDLERTIDIG UDSIGT Sektor2 VED HJÆLP AF parketMULIGHEDER (sti ' part-00000-ff70f69d-f1fb- 4450 -b4b4-dfd5a8d6c7ad-c000.snappy.parket ')' )

# Forespørgsel om at vise alle poster fra Sector2

linuxhint_spark_app.sql( 'vælg * fra Sektor2' ).at vise()

Produktion:

Eksempel 2:

Brug den forrige VIEW og skriv forespørgslen for at få vist alle poster med vurderingen 'Hot' eller 'Cool'.

# Forespørgsel om at vise alle poster fra Sector2 med Rating- Hot eller Cool.

linuxhint_spark_app.sql( 'vælg * fra Sector2 hvor Rating='Hot' OR Rating='Cool'' ).at vise()

Produktion:

Der er tre plader med vurderingen 'Hot' eller 'Cool'.

Konklusion

I PySpark skriver funktionen write.parquet() DataFrame til parketfilen. Read.parquet()-funktionen læser parketfilen til PySpark DataFrame eller enhver anden DataSource. Vi lærte, hvordan man læser parketfilen ind i PySpark DataFrame og ind i PySpark-tabellen. Som en del af denne vejledning diskuterede vi også, hvordan man opretter tabellerne fra PySpark DataFrame og filtrerer dataene ved hjælp af WHERE-sætningen.