Spark SQL on Spark-moduuli strukturoitujen tietojen käsittelyyn. Toisin kuin perus Spark RDD API, Spark SQL:n tarjoamat rajapinnat antavat Sparkille enemmän tietoa sekä datan että suoritettavan laskennan rakenteesta. Spark SQL käyttää sisäisesti tätä lisätietoa lisäoptimointeihin. Spark SQL:n kanssa voi olla vuorovaikutuksessa useilla tavoilla, mukaan lukien SQL ja Dataset API. Tulosta laskettaessa käytetään samaa suoritusmoottoria riippumatta siitä, millä API:lla/kielellä laskenta ilmaistaan. Tämä yhtenäistäminen tarkoittaa, että kehittäjät voivat helposti vaihtaa edestakaisin eri API:iden välillä sen mukaan, mikä tarjoaa luonnollisimman tavan ilmaista tietty muunnos.
Kaikki tämän sivun esimerkit käyttävät Spark-jakeluun sisältyviä esimerkkiaineistoja, ja ne voidaan ajaa spark-shell
-, pyspark
– tai sparkR
-kuoressa.
SQL
Yksi Spark SQL:n käyttötapa on SQL-kyselyjen suorittaminen.Spark SQL:ää voidaan käyttää myös tietojen lukemiseen olemassa olevasta Hive-asennuksesta. Lisätietoja tämän ominaisuuden konfiguroinnista on kohdassa Hive-taulukot. Kun suoritatSQL:ää jostain muusta ohjelmointikielestä, tulokset palautetaan Dataset/DataFrame:na.SQL-rajapinnan kanssa voi olla vuorovaikutuksessa myös komentorivillä tai JDBC/ODBC:n kautta.
Datasets and DataFrames
Dataset on hajautettu kokoelma tietoja.Dataset on Spark 1.6:ssa lisätty uusi rajapinta, joka tarjoaa RDD:iden edut (vahva tyypitys, mahdollisuus käyttää tehokkaita lambda-funktioita) Spark SQL:n optimoidun suoritusmoottorin eduilla. Dataset voidaan rakentaa JVM-objekteista ja sitten käsitellä funktionaalisilla muunnoksilla (map
, flatMap
, filter
jne.).Dataset API on saatavilla Scalassa jaJavassa. Pythonissa ei ole tukea Dataset API:lle. Mutta Pythonin dynaamisen luonteen vuoksi monet Dataset API:n eduista ovat jo käytettävissä (esim. voit käyttää rivin kenttää nimen perusteella luonnollisestirow.columnName
). R:n tapaus on samanlainen.
A DataFrame on Dataset, joka on järjestetty nimettyihin sarakkeisiin. Se vastaa käsitteellisesti relaatiotietokannan taulukkoa tai R/Pythonin datakehystä, mutta siinä on rikkaampia optimointeja konepellin alla. DataFrame voidaan rakentaa monenlaisista lähteistä, kuten strukturoiduista datatiedostoista, Hive-taulukoista, ulkoisista tietokannoista tai olemassa olevista RDD:istä.DataFrame API on saatavilla Scalassa, Javassa, Pythonissa ja R:ssä.Scalassa ja Javassa DataFrame edustaa Row
s:n Datasetia.Scala API:ssa DataFrame
on yksinkertaisesti Dataset
:n tyyppi alias.Kun taas Java API:ssa käyttäjien on käytettävä Dataset<Row>
:tä DataFrame
:n esittämiseen.
Tässä dokumentissa viitataan usein Row
s:n Scala/Java Dataseteihin DataFrameina.