Johdanto Spark-tietojoukkoon
Dataset on Spark SQL: n tietorakenne, joka tarjoaa käännösaikaistyyppisen turvallisuuden, oliokeskeisen käyttöliittymän sekä Spark SQL: n optimoinnin.
Käsitteellisesti se on muistissa oleva taulukkorakenne, jossa on rivejä ja sarakkeita ja joka on jaettu useille solmuille, kuten Dataframe.
Se on tietokehyksen jatko. Tärkein ero tietojoukon ja DataFrame-kehyksen välillä on, että tietojoukot on kirjoitettu voimakkaasti.
(Tietojoukko) = (Dataframe + Compile-Time -tyyppinen turvallisuus)
Dataset julkaistiin Spark 1.6: ssa kokeellisena sovellusliittymänä. Sekä Dataframe että Dataset ovat yhtenäisiä Spark 2.0 -versiossa ja Dataframeista tulee aliaksen Dataset (Row).
Tietokehys = tietojoukko (rivi)
Miksi tarvitsemme Spark-tietojoukkoa?
Jotta voimme ymmärtää tietojoukon selkeästi, meidän on aloitettava hiukan kipinän historiasta ja sen kehityksestä.
RDD on Sparkin ydin. SQL: n innoittamana ja asioiden helpottamiseksi Dataframe luotiin RDD: n päälle. Dataframe vastaa taulukkoa relaatiotietokannassa tai DataFrame Pythonissa.
RDD tarjoaa käännösajan tyyppisen turvallisuuden, mutta RDD: ssä ei ole automaattista optimointia.
Dataframe tarjoaa automaattisen optimoinnin, mutta siitä puuttuu käännösajan tyyppinen turvallisuus.
Tietojoukko lisätään tietokehyksen jatkeena. Tietojoukossa yhdistyvät sekä RDD: n (ts. Kopiotyyppiturvallisuus) että Dataframen (eli Spark SQL automaattinen optimointi) ominaisuudet.
(RDD (Spark 1.0)) -> (Dataframe (Spark1.3)) -> (Dataset (Spark1.6))
Koska Datasetilla on käännösaikainen turvallisuus, sitä tuetaan siksi vain käännetyllä kielellä (Java & Scala), mutta ei tulkitulla kielellä (R & Python). Mutta Spark Dataframe -sovellusliittymä on saatavana kaikilla neljällä kielellä (Java, Scala, Python & R), joita Spark tukee.
Kieli tukee Spark | Dataframe-sovellusliittymä | Dataset API |
Käännetty kieli (Java & Scala) | JOO | JOO |
Tulkattu kieli (R & Python) | JOO | EI |
Kuinka luoda Spark-tietojoukko?
Dataset voidaan luoda usealla tapaa käyttöesityksen perusteella
1. Luo ensin SparkSession
SparkSession on yksi syöttökohta kipinäsovellukseen, joka mahdollistaa vuorovaikutuksen taustalla olevien Spark-toimintojen kanssa ja Sparkin ohjelmoinnin DataFrame- ja Dataset-sovellusliittymien kanssa.
val spark = SparkSession
.builder()
.appName("SparkDatasetExample")
.enableHiveSupport()
.getOrCreate()
- Tietojoukon luominen käyttämällä perustietorakennetta, kuten alue, sekvenssi, luettelo jne.:
Range-toiminnon käyttäminen
Sekvenssin käyttäminen
Luettelon käyttäminen
- Tietojoukon luominen tapausluokan avulla käyttämällä .toDS () -menetelmää:
- Tietojoukon luominen RDD: stä .toDS ():
- Tietoaineiston luominen Dataframe-sovelluksesta tapausluokan avulla:
- Tietoaineiston luominen Dataframe-sovelluksesta Tuplesin avulla:
2. Toiminnot Spark-tietojoukossa
- Esimerkki sanamäärästä
- Muunna Spark Dataset datakehykseksi
Voimme myös muuntaa Spark-tietojoukon Datafameksi ja käyttää Dataframe-sovellusliittymiä kuten alla:
Spark Datasetin ominaisuudet
- Tyyppi Turvallisuus
Dataset tarjoaa käännösajan tyyppistä turvallisuutta. Se tarkoittaa, että syntaksi sekä sovelluksen analyysivirheet tarkistetaan käännöshetkellä ennen sen suorittamista.
- muuttumattomuudesta
Dataset on myös muuttumaton, kuten RDD ja Dataframe. Se tarkoittaa, että emme voi muuttaa luotua tietojoukkoa. Aina kun uusi tietojoukko luodaan, kun tietokantaan tehdään muutoksia.
- kaavio
Tietojoukko on muistissa oleva taulukkorakenne, jossa on rivejä ja nimettyjä sarakkeita.
- Suorituskyky ja optimointi
Kuten Dataframe, myös datajoukko käyttää Catalyst Optimization -sovellusta optimoidun loogisen ja fyysisen kyselysuunnitelman luomiseen.
- Ohjelmointikieli
Tietosarjan api esiintyy vain Java- ja Scala-kielillä, jotka ovat käännettyjä kieliä, mutta ei Pythonissa, joka on tulkittu kieli.
- Laiska arviointi
Kuten RDD ja Dataframe, myös datajoukko suorittaa laiska arvioinnin. Se tarkoittaa, että laskenta tapahtuu vain, kun toiminta suoritetaan. Spark tekee vain suunnitelmia muutosvaiheen aikana.
- Sarjakuvaus ja jätteiden keruu
Spark-tietojoukossa ei käytetä tavanmukaisia sarjanmittajia (Kryo tai Java-sarjanumerointi). Sen sijaan se käyttää Tungstenin nopeaa muistilaitteita, jotka ymmärtävät datan sisäisen rakenteen ja voivat muuttaa objektit tehokkaasti sisäisiksi binaarisäilöiksi. Se käyttää ulkopuolista data-sarjoittelua volframianturilla, joten roskien keräämistä ei tarvita.
johtopäätös
Dataset on paras sekä RDD: stä että Dataframe-kehyksestä. RDD tarjoaa käännösajan tyyppisen turvallisuuden, mutta automaattista optimointia ei ole. Dataframe tarjoaa automaattisen optimoinnin, mutta siitä puuttuu käännösajan tyyppinen turvallisuus. Dataset tarjoaa sekä käännösajan tyyppisen turvallisuuden että automaattisen optimoinnin. Siksi aineisto on paras valinta Spark-kehittäjille, jotka käyttävät Java- tai Scalaa.
Suositellut artikkelit
Tämä on Spark Dataset -oppaan opas. Tässä keskustellaan kuinka luodaan Spark Dataset monella tapaa esimerkkien ja ominaisuuksien avulla. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -
- Spark Shell -komennot
- Spark-haastattelukysymykset
- Ura Sparkissa
- Spark streaming
- Eri Tuplesiin liittyvät operaatiot
- Spark SQL Dataframe
- Spark SQL: n liitostyypit (esimerkit)
- Opas Unix-kuorikomentojen luetteloon
- 6 suosituinta kipinän komponenttia