Introduzione a Spark Dataset

Il set di dati è una struttura di dati in Spark SQL che fornisce la sicurezza del tipo in fase di compilazione, l'interfaccia orientata agli oggetti e l'ottimizzazione di Spark SQL.

Concettualmente, è una struttura tabulare in memoria con righe e colonne che è distribuita su più nodi come Dataframe.

È un'estensione del Dataframe. La differenza principale tra il set di dati e il DataFrame è che i set di dati sono fortemente tipizzati.

(Set di dati) = (Dataframe + tipo di sicurezza in fase di compilazione)

Il set di dati è stato rilasciato in Spark 1.6 come API sperimentale. Sia Dataframe che Dataset sono unificati nella versione Spark 2.0 e Dataframe diventa un alias per Dataset (Row).

Dataframe = Dataset (Row)

Perché abbiamo bisogno di Spark Dataset?

Per avere una chiara comprensione del set di dati, dobbiamo iniziare con un po 'di storia della scintilla e della sua evoluzione.

RDD è il nucleo di Spark. Ispirato da SQL e per semplificare le cose, Dataframe è stato creato nella parte superiore di RDD. Dataframe equivale a una tabella in un database relazionale o a DataFrame in Python.

RDD fornisce la sicurezza del tipo in fase di compilazione, ma non esiste l'ottimizzazione automatica in RDD.

Dataframe fornisce l'ottimizzazione automatica ma manca della sicurezza del tipo di compilazione in tempo.

Il set di dati viene aggiunto come estensione del Dataframe. Il set di dati combina sia le funzionalità di RDD (ovvero la sicurezza del tipo di compilazione) sia il Dataframe (ovvero l'ottimizzazione automatica di Spark SQL).

(RDD (Spark 1.0)) -> (Dataframe (Spark1.3)) -> (Set di dati (Spark1.6))

Dato che Dataset ha una sicurezza in fase di compilazione, quindi è supportato solo in un linguaggio compilato (Java e Scala) ma non in un linguaggio interpretato (R & Python). Ma Spark Dataframe API è disponibile in tutte e quattro le lingue (Java, Scala, Python e R) supportate da Spark.

Lingua supportata da SparkAPI DataframeAPI del set di dati
Linguaggio compilato (Java e Scala)
Interpreted Language (R & Python)NO

Come creare un set di dati Spark?

Esistono diversi modi per creare un set di dati in base al caso d'uso

1. Per prima cosa crea SparkSession

SparkSession è un singolo punto di accesso a un'applicazione spark che consente di interagire con la funzionalità Spark sottostante e di programmare Spark con API DataFrame e Dataset.

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

  • Per creare un set di dati utilizzando la struttura dei dati di base come Intervallo, Sequenza, Elenco, ecc.:

Utilizzando l'intervallo

Usando la sequenza

Utilizzando l'elenco

  • Per creare un set di dati utilizzando la sequenza delle classi case chiamando il metodo .toDS ():

  • Per creare un set di dati da RDD utilizzando .toDS ():

  • Per creare il set di dati da Dataframe utilizzando la classe Case:

  • Per creare il set di dati da Dataframe utilizzando Tuple:

2. Operazioni su Spark Dataset

  1. Esempio di conteggio parole

  1. Converti Spark Dataset in Dataframe

Possiamo anche convertire Spark Dataset in Datafame e utilizzare le API Dataframe come di seguito:

Funzionalità di Spark Dataset

  1. Tipo di sicurezza

Il set di dati fornisce la sicurezza del tipo in fase di compilazione. Ciò significa che la sintassi, nonché gli errori di analisi dell'applicazione, verranno controllati al momento della compilazione prima che venga eseguita.

  1. Immutabilità

Il set di dati è anche immutabile come RDD e Dataframe. Significa che non possiamo cambiare il set di dati creato. Ogni volta che viene creato un nuovo set di dati quando viene applicata una trasformazione al set di dati.

  1. Schema

Il set di dati è una struttura tabulare in memoria con righe e colonne denominate.

  1. Prestazioni e ottimizzazione

Come Dataframe, anche il set di dati utilizza l'ottimizzazione Catalyst per generare un piano di query logico e fisico ottimizzato.

  1. Linguaggio di programmazione

Il set di dati API è presente solo in Java e Scala che sono linguaggi compilati ma non in Python che è un linguaggio interpretato.

  1. Valutazione pigra

Come RDD e Dataframe, anche il set di dati esegue la valutazione lazy. Significa che il calcolo avviene solo quando viene eseguita l'azione. Spark fa piani solo durante la fase di trasformazione.

  1. Serializzazione e Garbage Collection

Il set di dati Spark non utilizza serializzatori standard (serializzazione Kryo o Java). Utilizza invece i veloci codificatori in memoria di Tungsten, che comprendono la struttura interna dei dati e possono trasformare in modo efficiente gli oggetti in memoria binaria interna. Utilizza la serializzazione dei dati off-heap utilizzando l'encoder Tungsten e quindi non è necessaria la garbage collection.

Conclusione

Il set di dati è il migliore sia di RDD che di Dataframe. RDD fornisce la sicurezza del tipo in fase di compilazione, ma non esiste un'ottimizzazione automatica. Dataframe fornisce l'ottimizzazione automatica ma manca della sicurezza del tipo di compilazione in tempo. Il set di dati offre sia la sicurezza del tipo in fase di compilazione che l'ottimizzazione automatica. Pertanto, il set di dati è la scelta migliore per gli sviluppatori Spark che utilizzano Java o Scala.

Articoli consigliati

Questa è una guida a Spark Dataset. Qui discutiamo come creare un set di dati Spark in più modi con esempi e funzionalità. Puoi anche dare un'occhiata ai seguenti articoli per saperne di più -

  1. Comandi Spark Shell
  2. Domande di intervista a Spark
  3. Carriera in Spark
  4. Spark Streaming
  5. Diverse operazioni relative alle tuple
  6. Spark SQL Dataframe
  7. Tipi di join in Spark SQL (esempi)
  8. Guida all'elenco dei comandi Unix Shell
  9. Top 6 componenti di Spark

Categoria: