Introduksjon til gnistdatasett

Datasett er en datastruktur i Spark SQL som gir sikkerhet for kompilertid, det objektorienterte grensesnittet samt Spark SQLs optimalisering.

Konseptuelt er det en tabellstruktur i minnet som har rader og kolonner som er fordelt over flere noder som Dataframe.

Det er en utvidelse av Dataframe. Hovedforskjellen mellom datasettet og DataFrame er at datasett er sterkt skrevet.

(Datasett) = (Dataframe + sikkerhetstype for kompileringstid)

Datasett ble utgitt i Spark 1.6 som et eksperimentelt API. Både Dataframe og Dataset er samlet i Spark 2.0-versjonen, og Dataframe blir et alias for Dataset (Row).

Dataframe = Datasett (rad)

Hvorfor trenger vi Spark Datasett?

For å ha en klar forståelse av datasettet, må vi begynne med litt gnisthistorie og dens utvikling.

RDD er kjernen i Spark. Inspirert av SQL og for å gjøre ting enklere, ble Dataframe opprettet på toppen av RDD. Dataframe tilsvarer en tabell i en relasjonsdatabase eller en DataFrame i Python.

RDD gir kompilertid-sikkerhet, men det er fravær av automatisk optimalisering i RDD.

Dataframe gir automatisk optimalisering, men den mangler sikkerhet for kompilertid.

Datasett legges til som en utvidelse av Dataframe. Datasett kombinerer funksjonene til både RDD (dvs. kompilertid-sikkerhet) og Dataframe (dvs. Spark SQL automatisk optimalisering).

(RDD (Spark 1.0)) -> (Dataframe (Spark1.3)) -> (Datasett (Spark1.6))

Ettersom Dataset har kompilertidssikkerhet, støttes det derfor bare på et kompilert språk (Java & Scala), men ikke på et tolket språk (R & Python). Men Spark Dataframe API er tilgjengelig på alle de fire språkene (Java, Scala, Python & R) støttet av Spark.

Språk støttet av SparkDataframe APIDatasett API
Kompilert språk (Java & Scala)JAJA
Tolket språk (R & Python)JANEI

Hvordan lage et gnistdatasett?

Det er flere måter å opprette datasett basert på usecase

1. Opprett først SparkSession

SparkSession er et enkelt inngangspunkt for et gnistprogram som gjør det mulig å samhandle med underliggende Spark-funksjonalitet og programmere Spark med DataFrame og Dataset APIer.

val spark = SparkSession
.builder()
.appName("SparkDatasetExample")
.enableHiveSupport()
.getOrCreate()

  • Slik lager du et datasett ved å bruke grunnleggende datastruktur som Range, Sequence, List, etc:

Bruker rekkevidde

Ved hjelp av sekvens

Bruker liste

  • Slik lager du et datasett ved å bruke sekvensen av saksklasser ved å ringe .toDS () -metoden:

  • Slik lager du datasett fra RDD ved å bruke .toDS ():

  • Slik lager du datasettet fra Dataframe ved bruk av Case Class:

  • Slik lager du datasettet fra Dataframe ved å bruke Tuples:

2. Operasjoner på Spark Datasett

  1. Eksempel på Word Count

  1. Konverter Spark Datasett til Dataframe

Vi kan også konvertere Spark Datasett til Datafame og bruke Dataframe APIer som nedenfor:

Funksjoner ved Spark Dataset

  1. Type sikkerhet

Datasett gir sikkerhet for kompilertid. Det betyr at syntaks, så vel som analysefeil i applikasjonen, vil bli sjekket på kompileringstidspunktet før den kjøres.

  1. uforanderlighet

Datasett er også uforanderlig som RDD og Dataframe. Det betyr at vi ikke kan endre det opprettede datasettet. Hver gang et nytt datasett opprettes når noen transformasjon brukes på datasettet.

  1. skjema

Datasett er en tabellstruktur i minnet som har rader og navngitte kolonner.

  1. Ytelse og optimalisering

I likhet med Dataframe bruker datasettet også Catalyst Optimization for å generere en optimalisert logisk og fysisk spørringsplan.

  1. Programmeringsspråk

Datasettet api er bare til stede i Java og Scala som er sammensatte språk, men ikke i Python som er et tolket språk.

  1. Lat evaluering

I likhet med RDD og Dataframe utfører Datasettet også en lat evaluering. Det betyr at beregningen bare skjer når handling utføres. Spark legger bare planer i transformasjonsfasen.

  1. Serialisering og søppelinnsamling

Gnistdatasett bruker ikke standard serialisatorer (Kryo eller Java-serialisering). I stedet bruker den Tungstens raske kodere i minnet, som forstår den interne strukturen i dataene og effektivt kan transformere objekter til intern binær lagring. Den bruker dataarialisering utenfor heap ved bruk av Tungsten-koderen, og det er derfor ikke behov for søppelinnsamling.

Konklusjon

Datasett er det beste av både RDD og Dataframe. RDD gir sikkerhetstiden for kompilertid, men det er fravær av automatisk optimalisering. Dataframe gir automatisk optimalisering, men den mangler sikkerhet for kompilertid. Datasett gir både sikkerhetstiden for kompilertid i tillegg til automatisk optimalisering. Derfor er datasettet det beste valget for Spark-utviklere som bruker Java eller Scala.

Anbefalte artikler

Dette er en guide til Spark Dataset. Her diskuterer vi Hvordan lage et gnistdatasett på flere måter med eksempler og funksjoner. Du kan også se på følgende artikler for å lære mer -

  1. Spark Shell-kommandoer
  2. Spark Interview Questions
  3. Karriere i Spark
  4. Gniststrømming
  5. Ulike operasjoner relatert til tuples
  6. Spark SQL Dataframe
  7. Typer ledd i Spark SQL (eksempler)
  8. Veiledning til listen over Unix Shell-kommandoer
  9. Topp 6 komponenter av gnist

Kategori: