Tässä oppaassa keskitymme pääasiassa parkettitiedoston lukemiseen/lataamiseen PySpark DataFrame/SQL:ään käyttämällä read.parquet()-funktiota, joka on saatavilla pyspark.sql.DataFrameReader-luokassa.
Sisällön aihe:
Lue parkettitiedosto PySpark DataFrameen
Lue parkettitiedosto PySpark SQL:ään
Pyspark.sql.DataFrameReader.parquet()
Tätä toimintoa käytetään parkettitiedoston lukemiseen ja sen lataamiseen PySpark DataFrameen. Se ottaa parkettitiedoston polun/tiedostonimen. Voimme yksinkertaisesti käyttää read.parquet()-funktiota, koska tämä on yleinen funktio.
Syntaksi:
Katsotaanpa read.parquet():n syntaksi:
spark_app.read.parquet(tiedoston_nimi.parketti/polku)Asenna ensin PySpark-moduuli pip-komennolla:
pip asennus pyspark
Hanki parkettiviila
Parkettitiedoston lukemiseen tarvitaan tiedot, joissa parkettitiedosto on tuotettu tiedoista. Tässä osassa näemme kuinka luodaan parkettitiedosto PySpark DataFramesta.
Luodaan PySpark DataFrame 5 tietueella ja kirjoitetaan tämä 'industry_parquet' parkettitiedostoon.
tuonti pysparkpyspark.sql:stä tuonti SparkSession,Row
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# luo tietokehys, joka tallentaa toimialan tiedot
Industry_df = linuxhint_spark_app.createDataFrame([Row(Type= 'Maatalous' ,Ala= 'USA' ,
Arvosana = 'Kuuma' ,Yhteensä_työntekijät= 100 ),
Rivi(Tyyppi= 'Maatalous' ,Ala= 'Intia' ,Arviointi= 'Kuuma' ,Yhteensä_työntekijät= 200 ),
Rivi(Tyyppi= 'Kehitys' ,Ala= 'USA' ,Arviointi= 'Lämmin' ,Yhteensä_työntekijät= 100 ),
Rivi(Tyyppi= 'Koulutus' ,Ala= 'USA' ,Arviointi= 'Viileä' ,Yhteensä_työntekijät= 400 ),
Rivi(Tyyppi= 'Koulutus' ,Ala= 'USA' ,Arviointi= 'Lämmin' ,Yhteensä_työntekijät= kaksikymmentä )
])
# Todellinen tietokehys
Industry_df.show()
# Kirjoita Industry_df parkettitiedostoon
Industry_df.coalesce( 1 ).write.parquet( 'teollisuus_parketti' )
Lähtö:
Tämä on DataFrame, joka sisältää 5 tietuetta.
Edelliselle DataFramelle luodaan parkettitiedosto. Tässä tiedostonimemme tunnisteella on 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet'. Käytämme tätä tiedostoa koko opetusohjelmassa.
Lue parkettitiedosto PySpark DataFrameen
Meillä on parkettiviila. Luetaan tämä tiedosto read.parquet()-funktiolla ja ladataan se PySpark DataFrameen.
tuonti pysparkpyspark.sql:stä tuonti SparkSession,Row
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Lue parkettitiedosto dataframe_from_parquet-objektiin.
dataframe_from_parquet=linuxhint_spark_app.read.parquet( 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet' )
# Näytä dataframe_from_parquet-DataFrame
dataframe_from_parquet.show()
Lähtö:
Näytämme DataFramen käyttämällä show()-menetelmää, joka luotiin parkettitiedostosta.
SQL-kyselyt parkettitiedostolla
DataFrameen lataamisen jälkeen voi olla mahdollista luoda SQL-taulukoita ja näyttää DataFrame-kehyksessä olevat tiedot. Meidän on luotava TEMPORARY VIEW ja käytettävä SQL-komentoja palauttaaksemme tietueet DataFrame-kehyksestä, joka on luotu parkettitiedostosta.
Esimerkki 1:
Luo väliaikainen näkymä nimeltä 'Sektorit' ja käytä SELECT-komentoa näyttääksesi tietueet DataFramessa. Voit viitata tähän opetusohjelma joka selittää kuinka luoda NÄKYMÄ Sparkissa – SQL.
tuonti pysparkpyspark.sql:stä tuonti SparkSession,Row
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Lue parkettitiedosto dataframe_from_parquet-objektiin.
dataframe_from_parquet=linuxhint_spark_app.read.parquet( 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet' )
# Luo näkymä yllä olevasta parkettitiedostosta nimeltä - 'Sektorit'
dataframe_from_parquet.createOrReplaceTempView( 'Sektorit' )
# Kysely näyttää kaikki sektorien tietueet
linuxhint_spark_app.sql( 'valitse * sektoreista' ).näytä()
Lähtö:
Esimerkki 2:
Kirjoita SQL-kysely käyttämällä edellistä näkymää:
- Näyttää kaikki tietueet sektoreista, jotka kuuluvat 'Intiaan'.
- Näytä kaikki tietueet sektoreista, joissa työntekijä on suurempi kuin 100.
linuxhint_spark_app.sql( 'valitse * sektoreista, joissa Alue='Intia'' ).näytä()
# Kysely näyttää kaikki tietueet sektoreista, joissa työntekijä on yli 100
linuxhint_spark_app.sql( 'valitse * sektoreista, joissa yhteensä_työntekijät>100' ).näytä()
Lähtö:
On vain yksi tietue, jonka alue on 'Intia', ja kaksi tietuetta, joissa työntekijöitä on suurempi kuin 100.
Lue parkettitiedosto PySpark SQL:ään
Ensin meidän on luotava VIEW käyttämällä CREATE-komentoa. Käyttämällä 'polku'-avainsanaa SQL-kyselyssä voimme lukea parkettitiedoston Spark SQL:lle. Polun jälkeen meidän on määritettävä tiedoston nimi/sijainti.
Syntaksi:
spark_app.sql( 'LUO VÄLIAIKAINEN NÄKYMÄ näkymän_nimi KÄYTTÄMÄLLÄ parkettiVAIHTOEHTOJA (polku ' tiedoston_nimi.parketti ')' )Esimerkki 1:
Luo väliaikainen näkymä nimeltä 'Sector2' ja lue parkettitiedosto siihen. Kirjoita valintakysely sql()-funktion avulla näyttääksesi kaikki näkymässä olevat tietueet.
tuonti pysparkpyspark.sql:stä tuonti SparkSession,Row
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Lue parkettitiedosto SparkSQL:ään
linuxhint_spark_app.sql( 'LUO VÄLIAIKAINEN NÄKYMÄ Sektori2 KÄYTTÄMÄLLÄ parkettivaihtoehtoja (polku' osa-00000-ff70f69d-f1fb- 4450 -b4b4-dfd5a8d6c7ad-c000.snappy.parquet ')' )
# Kysely näyttää kaikki sektorin2 tietueet
linuxhint_spark_app.sql( 'valitse * sektorista 2' ).näytä()
Lähtö:
Esimerkki 2:
Käytä edellistä NÄKYMÄA ja kirjoita kysely näyttääksesi kaikki tietueet, joiden luokitus on 'Kuuma' tai 'Cool'.
# Kysely näyttää kaikki sektorin 2 tietueet, joissa on luokitus - kuuma tai viileä.linuxhint_spark_app.sql( 'valitse * sektorista 2, jossa Rating='Kuuma' TAI Rating='Cool'' ).näytä()
Lähtö:
On olemassa kolme levyä, joiden luokitus on 'Hot' tai 'Cool'.
Johtopäätös
PySparkissa write.parquet()-funktio kirjoittaa DataFramen parkettitiedostoon. Read.parquet()-funktio lukee parkettitiedoston PySpark DataFrameen tai mihin tahansa muuhun tietolähteeseen. Opimme lukemaan parkettitiedoston PySpark DataFrameen ja PySpark-taulukkoon. Osana tätä opetusohjelmaa keskustelimme myös taulukoiden luomisesta PySpark DataFrame -kehyksestä ja tietojen suodattamisesta WHERE-lauseen avulla.