logo

PySpark SQL

Apache Spark on Apache Software Foundationin menestynein ohjelmisto, joka on suunniteltu nopeaan tietojenkäsittelyyn. Useat teollisuudenalat käyttävät Apache Sparkia ratkaisujensa löytämiseen. PySpark SQL on Sparkin moduuli, joka integroi relaatiokäsittelyn Sparkin toiminnalliseen ohjelmointirajapintaan. Voimme poimia tiedot käyttämällä SQL-kyselykieltä. Voimme käyttää samoja kyselyitä kuin SQL-kieltä.

Jos sinulla on perustiedot RDBMS:stä, PySpark SQL on helppokäyttöinen, jossa voit laajentaa perinteisen relaatiotietojen käsittelyn rajoituksia. Spark tukee myös Hive-kyselykieltä, mutta Hive-tietokannassa on rajoituksia. Spark SQL kehitettiin poistamaan Hive-tietokannan haitat. Katsotaanpa seuraavia Hiven haittoja:

Hiven haitat

  • Se ei voi jatkaa käsittelyä, mikä tarkoittaa, että jos suoritus epäonnistuu työnkulun keskellä, et voi jatkaa siitä, mihin se juuttui.
  • Emme voi pudottaa salattuja tietokantoja peräkkäin, kun roskakori on käytössä. Se johtaa suoritusvirheeseen. Pudottaakseen tällaisen tietokannan käyttäjien on käytettävä Purge-vaihtoehtoa.
  • Ad-hoc-kyselyt suoritetaan MapReducella, jonka Hive käynnistää, mutta kun analysoimme keskikokoista tietokantaa, se viivästyttää suorituskykyä.
  • Hive ei tue päivitys- tai poistotoimintoa.
  • Se rajoittuu alikyselytukeen.

Nämä haitat ovat syitä kehittää Apache SQL.

PySpark SQL:n lyhyt esittely

PySpark tukee integroitua relaatiokäsittelyä Sparkin toiminnallisen ohjelmoinnin kanssa. Se tukee eri tietolähteitä mahdollistaen SQL-kyselyjen yhdistämisen koodimuunnoksilla, mikä on erittäin tehokas työkalu.

PySpark SQL muodostaa yhteyden RDD:n ja relaatiotaulukon välille. Se tarjoaa paljon tiiviimmän integraation relaatio- ja proseduurikäsittelyn välillä deklaratiivisen Dataframe API:n avulla, joka on integroitu Spark-koodiin.

SQL:n avulla se voi olla helposti useamman käyttäjien saatavilla ja parantaa optimointia nykyisille käyttäjille. Se tukee myös monenlaisia ​​tietolähteitä ja algoritmeja Big-datassa.

PySpark SQL:n ominaisuus

PySpark SQL:n ominaisuudet on esitetty alla:

1) Johdonmukaisuus Data Access

Se tarjoaa johdonmukaisen tiedonsaannin tarkoittaa, että SQL tukee jaettua tapaa käyttää erilaisia ​​tietolähteitä, kuten Hive, Avro, Parquet, JSON ja JDBC. Sillä on merkittävä rooli kaikkien olemassa olevien käyttäjien mukauttamisessa Spark SQL:ään.

2) Yhdistäminen Sparkiin

PySpark SQL -kyselyt on integroitu Spark-ohjelmiin. Voimme käyttää kyselyjä Spark-ohjelmien sisällä.

Yksi sen suurimmista eduista on, että kehittäjien ei tarvitse hallita tilavirheitä manuaalisesti tai pitää sovellusta synkronoituna erätöiden kanssa.

3) Vakioliitännät

Se tarjoaa yhteyden JDBC:n tai ODBC:n kautta, ja nämä kaksi ovat alan standardeja business intelligence -työkalujen liitettävyydelle.

4) Käyttäjän määrittämät toiminnot

PySpark SQL:ssä on kieliyhdistelmä User-Defined Function (UDF:t). UDF:llä määritellään uusi sarakepohjainen funktio, joka laajentaa Spark SQL:n DSL:n sanastoa DataFramen muuntamista varten.

5) Hive-yhteensopivuus

PySpark SQL suorittaa muokkaamattomia Hive-kyselyjä nykyisille tiedoille. Se mahdollistaa täyden yhteensopivuuden nykyisten Hive-tietojen kanssa.

PySpark SQL-moduuli

Jotkut tärkeät Spark SQL- ja DataFrame-luokat ovat seuraavat:

    pyspark.sql.SparkSession:Se edustaa pääsisääntuloa Datakehys ja SQL-toiminnot.pyspark.sql.DataFrame:Se edustaa hajautettua datakokoelmaa, joka on ryhmitelty nimettyihin sarakkeisiin.pyspark.sql.Column:Se edustaa sarakelauseketta a:ssa Datakehys. pyspark.sql.Row:Se edustaa tietoriviä a:ssa Datakehys. pyspark.sql.GroupedData:Aggregointimenetelmät, palauttaja DataFrame.groupBy(). pyspark.sql.DataFrameNaFunctions:Se edustaa menetelmiä puuttuvien tietojen (nollaarvot) käsittelemiseksi.pyspark.sql.DataFrameStatFunctions:Se edustaa tilastotoimintojen menetelmiä.pysark.sql.functions:Se edustaa luetteloa käytettävissä olevista sisäänrakennetuista toiminnoista Datakehys. pyspark.sql.types:Se edustaa luetteloa käytettävissä olevista tietotyypeistä.pyspark.sql.Window:Sitä käytetään työskentelemään ikkunatoimintojen kanssa.

Harkitse seuraavaa PySpark SQL -esimerkkiä.

 import findspark findspark.init() import pyspark # only run after findspark.init() from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() df = spark.sql('''select 'spark' as hello ''') df.show() 

Lähtö:

 +-----+ |hello| +-----+ |spark| +-----+ 

Koodin selitys:

Yllä olevassa koodissa olemme tuoneet löytää kipinää moduuli ja soitti findspark.init() rakentaja; sitten toimme SparkSession-moduulin kipinäistunnon luomiseksi.

pyspark.sql-tiedostosta tuo SparkSession

Kipinäistunnon avulla voidaan luoda Dataset ja DataFrame API. SparkSessionilla voidaan myös luoda DataFrame, rekisteröidä DataFrame taulukoksi, suorittaa SQL:ää taulukoiden yli, tallentaa välimuistitaulukkoa ja lukea parkettitiedostoa.

luokan rakentaja

Se on Spark Sessionin rakentaja.

getOrCreate()

Sitä käytetään olemassa olevan SparkSession, tai jos olemassa olevaa ei ole, luo uusi rakentajassa asetettujen asetusten perusteella.

Muutamia muita menetelmiä

Muutamia PySpark SQL:n menetelmiä ovat seuraavat:

1. sovelluksen nimi(nimi)

Sitä käytetään asettamaan sovelluksen nimi, joka näytetään Spark-verkkokäyttöliittymässä. Parametri nimi hyväksyy parametrin nimen.

2. config(key=ei mitään, arvo = ei mitään, conf = ei mitään)

Sitä käytetään määrittämään asetusvaihtoehto. Tällä menetelmällä asetetut asetukset siirretään automaattisesti molempiin SparkConf ja SparkSession asetukset.

 from pyspark.conf import SparkConfSparkSession.builder.config(conf=SparkConf()) 

Parametrit:

    avain-Määritysominaisuuden avaimen nimimerkkijono.arvo-Se edustaa konfigurointiominaisuuden arvoa.conf -Esimerkki SparkConf.

3. mestari (mestari)

Se asettaa kipinän pää-URL-osoitteen, johon yhdistetään, kuten 'paikallinen' toimimaan paikallisesti, 'paikallinen[4]' toimimaan paikallisesti neljän ytimen kanssa.

Parametrit:

    hallita:url kipinämestarille.

4. SparkSession.catalog

Se on käyttöliittymä, jonka käyttäjä voi luoda, pudottaa, muuttaa tai tehdä kyselyjä taustalla olevasta tietokannasta, taulukoista, funktioista jne.

5. SparkSession.conf

Se on ajonaikainen konfigurointirajapinta kipinöille. Tämä on käyttöliittymä, jonka kautta käyttäjä voi saada ja määrittää kaikki Spark- ja Hadoop-kokoonpanot, jotka liittyvät Spark SQL:ään.

luokka pyspark.sql.DataFrame

Se on hajautettu kokoelma tietoja, jotka on ryhmitelty nimettyihin sarakkeisiin. DataFrame on samanlainen kuin Spark SQL:n relaatiotaulukko, ja se voidaan luoda SQLContextin eri funktioilla.

 student = sqlContext.read.csv('...') 

Datakehyksen luomisen jälkeen voimme käsitellä sitä käyttämällä useita verkkoaluekohtaisia ​​kieliä (DSL), jotka ovat DataFramen ennalta määritettyjä toimintoja. Harkitse seuraavaa esimerkkiä.

 # To create DataFrame using SQLContext student = sqlContext.read.parquet('...') department = sqlContext.read.parquet('...') student.filter(marks > 55).join(department, student.student_Id == department.id)  .groupBy(student.name, 'gender').({'name': 'student_Id', 'mark': 'department'}) 

Tarkastellaanpa seuraavaa esimerkkiä:

Kyselyt Spark SQL:llä

Seuraavassa koodissa luomme ensin DataFrame-kehyksen ja suoritamme SQL-kyselyt tietojen hakemiseksi. Harkitse seuraavaa koodia:

 from pyspark.sql import * #Create DataFrame songdf = spark.read.csv(r'C:UsersDEVANSH SHARMA	op50.csv', inferSchema = True, header = True) #Perform SQL queries songdf.select('Genre').show() songdf.filter(songdf['Genre']=='pop').show() 

Lähtö:

 +----------------+ | Genre| +----------------+ | canadian pop| | reggaeton flow| | dance pop| | pop| | dfw rap| | pop| | trap music| | pop| | country rap| | electropop| | reggaeton| | dance pop| | pop| | panamanian pop| |canadian hip hop| | dance pop| | latin| | dfw rap| |canadian hip hop| | escape room| +----------------+ only showing top 20 rows +---+--------------------+-------------+-----+----------------+------+------------+--------------+--------+--------+-------+--------------+------------+----------+ |_c0| Track.Name| Artist.Name|Genre|Beats.Per.Minute|Energy|Danceability|Loudness..dB..|Liveness|Valence.|Length.|Acousticness..|Speechiness.|Popularity| +---+--------------------+-------------+-----+----------------+------+------------+--------------+--------+--------+-------+--------------+------------+----------+ | 4|Beautiful People ...| Ed Sheeran| pop| 93| 65| 64| -8| 8| 55| 198| 12| 19| 86| | 6|I Don't Care (wit...| Ed Sheeran| pop| 102| 68| 80| -5| 9| 84| 220| 9| 4| 84| | 8| How Do You Sleep?| Sam Smith| pop| 111| 68| 48| -5| 8| 35| 202| 15| 9| 90| | 13| Someone You Loved|Lewis Capaldi| pop| 110| 41| 50| -6| 11| 45| 182| 75| 3| 88| | 38|Antisocial (with ...| Ed Sheeran| pop| 152| 82| 72| -5| 36| 91| 162| 13| 5| 87| | 44| Talk| Khalid| pop| 136| 40| 90| -9| 6| 35| 198| 5| 13| 84| | 50|Cross Me (feat. C...| Ed Sheeran| pop| 95| 79| 75| -6| 7| 61| 206| 21| 12| 82| +---+--------------------+-------------+-----+----------------+------+------------+--------------+--------+--------+-------+--------------+------------+----------+ 

Käytä groupBy()-funktiota

java silmukalle

GroupBy()-funktio kerää samankaltaisia ​​luokkatietoja.

 songdf.groupBy('Genre').count().show() 

Lähtö:

 +----------------+-----+ | Genre|count| +----------------+-----+ | boy band| 1| | electropop| 2| | pop| 7| | brostep| 2| | big room| 1| | pop house| 1| | australian pop| 1| | edm| 3| | r&b en espanol| 1| | dance pop| 8| | reggaeton| 2| | canadian pop| 2| | trap music| 1| | escape room| 1| | reggaeton flow| 2| | panamanian pop| 2| | atl hip hop| 1| | country rap| 2| |canadian hip hop| 3| | dfw rap| 2| +----------------+-----+ 

jakauma (numeroosiot, *sarakkeet)

The jakelu() palauttaa uuden DataFramen, joka on osiointilauseke. Tämä toiminto hyväksyy kaksi parametria numeroosiot ja *col. The numeroosiot parametri määrittää sarakkeiden tavoitemäärän.

 song_spotify.repartition(10).rdd.getNumPartitions() data = song_spotify.union(song_spotify).repartition('Energy') data.show(5) 

Lähtö:

 +---+--------------------+-----------+-------+----------------+------+------------+--------------+--------+--------+-------+--------------+------------+----------+ |_c0| Track.Name|Artist.Name| Genre|Beats.Per.Minute|Energy|Danceability|Loudness..dB..|Liveness|Valence.|Length.|Acousticness..|Speechiness.|Popularity| +---+--------------------+-----------+-------+----------------+------+------------+--------------+--------+--------+-------+--------------+------------+----------+ | 4|Beautiful People ...| Ed Sheeran| pop| 93| 65| 64| -8| 8| 55| 198| 12| 19| 86| | 5|Goodbyes (Feat. Y...|Post Malone|dfw rap| 150| 65| 58| -4| 11| 18| 175| 45| 7| 94| | 17| LA CANCI?N| J Balvin| latin| 176| 65| 75| -6| 11| 43| 243| 15| 32| 90| | 4|Beautiful People ...| Ed Sheeran| pop| 93| 65| 64| -8| 8| 55| 198| 12| 19| 86| | 5|Goodbyes (Feat. Y...|Post Malone|dfw rap| 150| 65| 58| -4| 11| 18| 175| 45| 7| 94| +---+--------------------+-----------+-------+----------------+------+------------+--------------+--------+--------+-------+--------------+------------+----------+ only showing top 5 rows