PySpark Read.Parquet()

Pyspark Read Parquet



I PySpark skriver funktionen write.parquet() DataFrame till parkettfilen och read.parquet() läser parkettfilen till PySpark DataFrame eller någon annan datakälla. För att snabbt och effektivt bearbeta kolumnerna i Apache Spark behöver vi komprimera data. Datakomprimering sparar vårt minne och alla kolumner omvandlas till platt nivå. Det betyder att lagringen på plan kolonnnivå finns. Filen som lagrar dessa är känd som PARQUET-filen.

I den här guiden kommer vi främst att fokusera på att läsa/ladda parkettfilen i PySpark DataFrame/SQL med hjälp av funktionen read.parquet() som är tillgänglig i klassen pyspark.sql.DataFrameReader.

Ämne för innehåll:







Hämta Parkettfilen



Läs Parkettfilen till PySpark DataFrame



Läs Parkettfilen till PySpark SQL





Pyspark.sql.DataFrameReader.parquet()

Denna funktion används för att läsa parkettfilen och ladda den i PySpark DataFrame. Den tar sökvägen/filnamnet för parkettfilen. Vi kan helt enkelt använda funktionen read.parquet() eftersom detta är den generiska funktionen.

Syntax:



Låt oss se syntaxen för read.parquet():

spark_app.read.parquet(filnamn.parkett/sökväg)

Installera först PySpark-modulen med pip-kommandot:

pip installera pyspark

Hämta Parkettfilen

För att läsa en parkettfil behöver du den data där parkettfilen genereras från den datan. I den här delen kommer vi att se hur man genererar en parkettfil från PySpark DataFrame.

Låt oss skapa en PySpark DataFrame med 5 poster och skriva detta till parkettfilen 'industry_parquet'.

importera pyspark

från pyspark.sql importera SparkSession,Row

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

# skapa dataramen som lagrar branschdetaljer

industry_df = linuxhint_spark_app.createDataFrame([Row(Type= 'Lantbruk' ,Area= 'USA' ,
Betyg= 'Varm' ,Total_anställda= 100 ),

Rad(Typ= 'Lantbruk' ,Area= 'Indien' ,Betyg= 'Varm' ,Total_anställda= 200 ),

Rad(Typ= 'Utveckling' ,Area= 'USA' ,Betyg= 'Värma' ,Total_anställda= 100 ),

Rad(Typ= 'Utbildning' ,Area= 'USA' ,Betyg= 'Häftigt' ,Total_anställda= 400 ),

Rad(Typ= 'Utbildning' ,Area= 'USA' ,Betyg= 'Värma' ,Total_anställda= tjugo )

])

# Faktisk DataFrame

industry_df.show()

# Skriv industri_df till parkettfilen

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

Produktion:

Detta är DataFrame som har 5 poster.

En parkettfil skapas för den tidigare DataFrame. Här är vårt filnamn med tillägget 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet'. Vi använder den här filen i hela handledningen.

Läs Parkettfilen till PySpark DataFrame

Vi har parkettfilen. Låt oss läsa den här filen med funktionen read.parquet() och ladda den i PySpark DataFrame.

importera pyspark

från pyspark.sql importera SparkSession,Row

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

# Läs parkettfilen till dataframe_from_parquet-objektet.

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

# Visa dataframe_from_parquet-DataFrame

dataframe_from_parquet.show()

Produktion:

Vi visar DataFrame med metoden show() som skapades från parkettfilen.

SQL-frågor med parkettfil

Efter att ha laddats in i DataFrame kan det vara möjligt att skapa SQL-tabellerna och visa data som finns i DataFrame. Vi måste skapa en TEMPORARY VIEW och använda SQL-kommandona för att returnera posterna från DataFrame som skapas från parkettfilen.

Exempel 1:

Skapa en tillfällig vy med namnet 'Sektorer' och använd kommandot SELECT för att visa posterna i DataFrame. Du kan hänvisa till detta handledning som förklarar hur man skapar en VIEW i Spark – SQL.

importera pyspark

från pyspark.sql importera SparkSession,Row

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

# Läs parkettfilen till dataframe_from_parquet-objektet.

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

# Skapa vy från ovanstående parkettfil med namnet - 'Sektorer'

dataframe_from_parquet.createOrReplaceTempView( 'Sektorer' )

# Fråga för att visa alla poster från sektorerna

linuxhint_spark_app.sql( 'välj * från sektorer' ).show()

Produktion:

Exempel 2:

Skriv SQL-frågan med föregående VY:

  1. För att visa alla poster från de sektorer som tillhör 'Indien'.
  2. För att visa alla poster från sektorerna med en anställd som är fler än 100.
# Fråga för att visa alla poster från de sektorer som tillhör 'Indien'.

linuxhint_spark_app.sql( 'välj * från sektorer där Area='Indien'' ).show()

# Fråga för att visa alla poster från sektorerna med anställda fler än 100

linuxhint_spark_app.sql( 'välj * från sektorer där Totalt_anställda>100' ).show()

Produktion:

Det finns bara en post med område som är 'Indien' och två poster med anställda som är fler än 100.

Läs Parkettfilen till PySpark SQL

Först måste vi skapa en VIEW med kommandot CREATE. Genom att använda nyckelordet 'path' i SQL-frågan kan vi läsa parkettfilen till Spark SQL. Efter sökvägen måste vi ange filnamnet/platsen för filen.

Syntax:

spark_app.sql( 'SKAPA TILLFÄLLIG VISNING view_name ANVÄNDA parkettalternativ (sökväg ' filnamn.parkett ')' )

Exempel 1:

Skapa en tillfällig vy med namnet 'Sector2' och läs in parkettfilen i den. Använd sql()-funktionen, skriv urvalsfrågan för att visa alla poster som finns i vyn.

importera pyspark

från pyspark.sql importera SparkSession,Row

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

# Läs in parkettfilen till Spark-SQL

linuxhint_spark_app.sql( 'SKAPA TILLFÄLLIG VISNING Sektor 2 MED ANVÄNDNING AV parkettalternativ (sökväg ' part-00000-ff70f69d-f1fb- 4450 -b4b4-dfd5a8d6c7ad-c000.snappy.parquet ')' )

# Fråga för att visa alla poster från Sector2

linuxhint_spark_app.sql( 'välj * från sektor 2' ).show()

Produktion:

Exempel 2:

Använd föregående VIEW och skriv frågan för att visa alla poster med betyget 'Hot' eller 'Cool'.

# Fråga för att visa alla poster från Sector2 med Rating- Hot eller Cool.

linuxhint_spark_app.sql( 'välj * från Sektor2 där Rating='Hot' OR Rating='Cool'' ).show()

Produktion:

Det finns tre skivor med betyget 'Hot' eller 'Cool'.

Slutsats

I PySpark skriver funktionen write.parquet() DataFrame till parkettfilen. Read.parquet()-funktionen läser parkettfilen till PySpark DataFrame eller någon annan datakälla. Vi lärde oss hur man läser in parkettfilen i PySpark DataFrame och i PySpark-tabellen. Som en del av denna handledning diskuterade vi också hur man skapar tabellerna från PySpark DataFrame och filtrerar data med hjälp av WHERE-satsen.