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:
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 pysparkfrå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 pysparkfrå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 pysparkfrå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:
- För att visa alla poster från de sektorer som tillhör 'Indien'.
- För att visa alla poster från sektorerna med en anställd som är fler än 100.
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 pysparkfrå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.