Introducere în setul de date Spark

Dataset este o structură de date din Spark SQL care oferă siguranță de tip compilare în timp, interfața orientată pe obiecte, precum și optimizarea Spark SQL.

Conceptual, este o structură tabulară în memorie, având rânduri și coloane, care este distribuită pe mai multe noduri, cum ar fi Dataframe.

Este o extensie a Dataframe. Principala diferență între Dataset și DataFrame este că Datasets-urile sunt puternic tastate.

(Dataset) = (Dataframe + siguranță tip Compile-time)

Dataset a fost lansat în Spark 1.6 ca API-ul experimental. Atât Dataframe cât și Dataset sunt unificate în versiunea Spark 2.0, iar Dataframe devine un alias pentru Dataset (Row).

Dataframe = set de date (rând)

De ce avem nevoie de Spark Dataset?

Pentru a înțelege clar Dataset, trebuie să începem cu un pic de istoric de scânteie și evoluția acesteia.

RDD este nucleul Spark. Inspirat de SQL și pentru a facilita lucrurile, Dataframe a fost creat în partea de sus a RDD. Dataframe este echivalent cu un tabel dintr-o bază de date relațională sau un DataFrame în Python.

RDD oferă siguranță de tip compilare în timp, dar există absența optimizării automate în RDD.

Dataframe oferă o optimizare automată, dar îi lipsește siguranța tipului de compilare.

Set de date este adăugat ca o extensie a Dataframe. Dataset combină caracteristicile atât RDD (adică siguranță de tip compilare), cât și Dataframe (adică optimizare automată Spark SQL).

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

Deoarece Dataset are siguranță în compilare în timp, prin urmare, este acceptat doar într-un limbaj compilat (Java și Scala), dar nu într-un limbaj interpretat (R & Python). Însă API-ul Spark Dataframe este disponibil în toate cele patru limbi (Java, Scala, Python și R) acceptate de Spark.

Limba acceptată de SparkAPI-ul DataframeAPI-ul setului de date
Limbă compilată (Java și Scala)DADA
Limba interpretată (R & Python)DANU

Cum să creezi un set de date Spark?

Există mai multe modalități de creare a setului de date bazat pe utilizarea e-mail

1. Mai întâi Creați SparkSession

SparkSession este un singur punct de intrare către o aplicație de scânteie care permite interacțiunea cu funcționalitatea Spark de bază și programarea Spark cu API-urile DataFrame și Dataset.

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

  • Pentru a crea un set de date utilizând structura de date de bază, cum ar fi Interval, Secvență, Listă, etc:

Folosind gama

Utilizarea secvenței

Utilizarea listei

  • Pentru a crea un set de date utilizând secvența claselor de cazuri apelând metoda .toDS ():

  • Pentru a crea set de date din RDD folosind .toDS ():

  • Pentru a crea setul de date din Dataframe folosind Case Class:

  • Pentru a crea setul de date din Dataframe folosind Tuples:

2. Operațiuni cu setul de date Spark

  1. Exemplu de numărare de cuvinte

  1. Convertiți setul de date Spark în Dataframe

De asemenea, putem converti Spark Dataset în Datafame și să utilizăm API-urile Dataframe după cum urmează:

Caracteristici ale Spark Dataset

  1. Tip siguranță

Dataset oferă siguranță de tip compilare în timp. Înseamnă că sintaxa, precum și erorile de analiză ale aplicației, vor fi verificate la timp de compilare înainte de a fi difuzate.

  1. inflexibilitate

Dataset este, de asemenea, imuabil precum RDD și Dataframe. Înseamnă că nu putem schimba setul de date creat. De fiecare dată când este creat un nou set de date când se aplică orice transformare la setul de date.

  1. Schemă

Dataset este o structură tabulară din memorie care are rânduri și coloane numite.

  1. Performanță și optimizare

Ca și Dataframe, Dataset folosește, de asemenea, Catalyst Optimization pentru a genera un plan de interogare logic și fizic optimizat.

  1. Limbaj de programare

Setul de date api este prezent doar în Java și Scala, care sunt limbi compilate, dar nu și în Python, care este un limbaj interpretat.

  1. Evaluarea leneșă

Ca și RDD și Dataframe, Dataset efectuează, de asemenea, evaluarea leneșă. Înseamnă că calculul se întâmplă numai atunci când este efectuată acțiunea. Spark face doar planuri în faza de transformare.

  1. Serializare și colectare gunoi

Setul de date Spark nu utilizează serializatoare standard (serializare Kryo sau Java). În schimb, utilizează codificatoare rapide de memorie Tungsten, care înțeleg structura internă a datelor și pot transforma în mod eficient obiectele în stocare internă binară. Utilizează serializarea datelor off-heap folosind codificatoare Tungsten și, prin urmare, nu este nevoie de colectarea gunoiului.

Concluzie

Dataset este cel mai bun atât din RDD, cât și din Dataframe. RDD oferă siguranță de tip compilare în timp, dar există absența optimizării automate. Dataframe oferă o optimizare automată, dar îi lipsește siguranța tipului în timp de compilare. Dataset oferă atât siguranță în timp de compilare, cât și optimizare automată. Prin urmare, setul de date este cea mai bună alegere pentru dezvoltatorii Spark care folosesc Java sau Scala.

Articole recomandate

Acesta este un ghid pentru Spark Dataset. Aici vom discuta despre cum să creați un set de date Spark în mai multe moduri cu exemple și caracteristici. De asemenea, puteți arunca o privire la următoarele articole pentru a afla mai multe -

  1. Comandele Spark Shell
  2. Întrebări la interviu Spark
  3. Cariera în Spark
  4. Spark Streaming
  5. Diferite operațiuni legate de Tuple
  6. Spark SQL Dataframe
  7. Tipuri de uniri în Spark SQL (Exemple)
  8. Ghid pentru lista de comenzi Unix Shell
  9. Cele mai bune 6 componente ale Spark

Categorie: