Introduktion til gnistdatasæt

Datasæt er en datastruktur i Spark SQL, der giver sikkerhedstiden for kompileringstid, det objektorienterede interface samt Spark SQL's optimering.

Konceptuelt er det en in-hukommelsestabellstruktur med rækker og kolonner, der er fordelt over flere noder som Dataframe.

Det er en udvidelse af Dataframe. Den største forskel mellem datasættet og DataFrame er, at datasæt er stærkt indtastet.

(Dataset) = (Dataframe + sikkerhed for kompileringstid)

Datasæt blev frigivet i Spark 1.6 som et eksperimentelt API. Både Dataframe og Dataset er samlet i Spark 2.0-versionen, og Dataframe bliver et alias for Dataset (Row).

Dataframe = Datasæt (række)

Hvorfor har vi brug for Spark Datasæt?

For at have en klar forståelse af datasættet må vi begynde med en smule gnisthistorie og dens udvikling.

RDD er kernen i Spark. Inspireret af SQL og for at gøre tingene lettere blev Dataframe oprettet på toppen af ​​RDD. Dataframe svarer til en tabel i en relationsdatabase eller en DataFrame i Python.

RDD giver kompileringstidssikkerhed, men der er ikke nogen automatisk optimering i RDD.

Dataframe giver automatisk optimering, men det mangler sikkerhed for kompileringstid.

Datasæt tilføjes som en udvidelse af Dataframe. Datasæt kombinerer funktionerne i både RDD (dvs. kompileringstidssikkerhed) såvel som Dataframe (dvs. Spark SQL automatisk optimering).

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

Da datasæt har kompileret tidssikkerhed, understøttes det derfor kun på et kompileret sprog (Java & Scala), men ikke på et tolket sprog (R & Python). Men Spark Dataframe API er tilgængelig på alle de fire sprog (Java, Scala, Python & R) understøttet af Spark.

Sprog understøttet af SparkDataframe APIDatasæt API
Kompileret sprog (Java & Scala)JAJA
Fortolket sprog (R & Python)JAINGEN

Sådan opretter du et gnistdatasæt?

Der er flere måder at oprette datasæt baseret på usecase

1. Opret først SparkSession

SparkSession er et enkelt indgangspunkt til et gnistprogram, der tillader interaktion med den underliggende Spark-funktionalitet og programmering af Spark med DataFrame og Dataset API'er.

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

  • Sådan opretter du et datasæt ved hjælp af grundlæggende datastruktur som Range, Sequence, List osv.:

Brug af rækkevidde

Brug af sekvens

Brug af liste

  • Sådan opretter du et datasæt ved hjælp af rækkefølgen af ​​sagsklasser ved at kalde .toDS () -metoden:

  • Sådan opretter du datasæt fra RDD ved hjælp af .toDS ():

  • Sådan opretter du datasættet fra Dataframe ved hjælp af Case Class:

  • Sådan opretter du datasættet fra Dataframe ved hjælp af Tuples:

2. Drift på gnistdatasæt

  1. Eksempel på ordtælling

  1. Konverter gnistdatasæt til Dataframe

Vi kan også konvertere Spark Dataset til Datafame og bruge Dataframe API'er som nedenfor:

Funktioner i Spark Dataset

  1. Type sikkerhed

Datasæt giver kompileringstidssikkerhed. Det betyder, at syntaks, såvel som analysefejl i applikationen, vil blive kontrolleret på kompileringstidspunktet, før det kører.

  1. uforanderlighed

Datasæt er også uforanderligt som RDD og Dataframe. Det betyder, at vi ikke kan ændre det oprettede datasæt. Hver gang der oprettes et nyt datasæt, når der transformeres på datasættet.

  1. Schema

Datasæt er en tabelstruktur i hukommelsen, der har rækker og navngivne kolonner.

  1. Ydeevne og optimering

Ligesom Dataframe bruger datasættet også Catalyst Optimization til at generere en optimeret logisk og fysisk forespørgselsplan.

  1. Programmeringssprog

Datasættet api findes kun i Java og Scala, som er kompilerede sprog, men ikke i Python, som er et tolket sprog.

  1. Lazy Evaluering

Ligesom RDD og Dataframe udfører datasættet også en doven evaluering. Det betyder, at beregningen kun sker, når der udføres handling. Spark laver kun planer i transformationsfasen.

  1. Serialisering og affaldsopsamling

Gnistdatasæt bruger ikke standard serialisatorer (Kryo eller Java-serialisering). I stedet bruger den Tungstens hurtige hukommelseskodere, der forstår den interne struktur i dataene og effektivt kan omdanne objekter til intern binær opbevaring. Det bruger dataarialisering off-heap ved hjælp af Tungsten-koderen, og der er derfor ikke behov for indsamling af affald.

Konklusion

Datasæt er det bedste af både RDD og Dataframe. RDD giver sikkerhedstypen kompileringstid, men der er ikke nogen automatisk optimering. Dataframe giver automatisk optimering, men den mangler sikkerhed for kompileringstiden. Datasæt giver både kompileringstidssikkerhed såvel som automatisk optimering. Derfor er datasættet det bedste valg for Spark-udviklere, der bruger Java eller Scala.

Anbefalede artikler

Dette er en guide til Spark Dataset. Her drøfter vi Sådan opretter du et gnistdatasæt på flere måder med eksempler og funktioner. Du kan også se på de følgende artikler for at lære mere -

  1. Spark Shell-kommandoer
  2. Spark Interview Spørgsmål
  3. Karriere i gnist
  4. Gnist streaming
  5. Forskellige operationer relateret til tuples
  6. Spark SQL Dataframe
  7. Typer af sammenføjninger i Spark SQL (eksempler)
  8. Vejledning til listen over Unix Shell-kommandoer
  9. Top 6 komponenter af gnist

Kategori: