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:
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 pysparkfra 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 pysparkfra 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 pysparkfra 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:
- For å vise alle poster fra sektorene som tilhører 'India'.
- For å vise alle poster fra sektorene med en ansatt som er større enn 100.
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 pysparkfra 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.