Introductie van Spark Dataset

Dataset is een gegevensstructuur in Spark SQL die zorgt voor compilatie van het type veiligheid, de objectgeoriënteerde interface en de optimalisatie van Spark SQL.

Conceptueel is het een tabelstructuur in het geheugen met rijen en kolommen die is verdeeld over meerdere knooppunten zoals Dataframe.

Het is een uitbreiding van het Dataframe. Het belangrijkste verschil tussen de gegevensset en het gegevensframe is dat gegevenssets sterk worden getypt.

(Dataset) = (Dataframe + Compile-time type veiligheid)

Dataset werd uitgebracht in Spark 1.6 als een experimentele API. Zowel Dataframe als Dataset zijn verenigd in Spark 2.0-versie en Dataframe wordt een alias voor Dataset (Row).

Dataframe = Dataset (rij)

Waarom hebben we Spark Dataset nodig?

Om een ​​duidelijk begrip van Dataset te krijgen, moeten we beginnen met een beetje geschiedenis van vonk en de evolutie ervan.

RDD is de kern van Spark. Geïnspireerd door SQL en om dingen eenvoudiger te maken, werd Dataframe gecreëerd bovenop RDD. Dataframe is gelijk aan een tabel in een relationele database of een DataFrame in Python.

RDD biedt compilatie-type veiligheid, maar er is geen automatische optimalisatie in RDD.

Dataframe biedt automatische optimalisatie, maar het ontbreekt aan compilatie-type beveiliging.

Dataset is toegevoegd als een uitbreiding van het Dataframe. Dataset combineert de functies van zowel RDD (dat wil zeggen compilatie-type veiligheid) als Dataframe (dat wil zeggen Spark SQL automatische optimalisatie).

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

Omdat Dataset compileertijdveiligheid heeft, wordt het alleen ondersteund in een gecompileerde taal (Java & Scala) maar niet in een geïnterpreteerde taal (R & Python). Maar Spark Dataframe API is beschikbaar in alle vier talen (Java, Scala, Python & R) ondersteund door Spark.

Taal ondersteund door SparkDataframe APIDataset API
Gecompileerde taal (Java en Scala)JAJA
Interpreted Language (R & Python)JANEE

Hoe maak je een Spark Dataset?

Er zijn meerdere manieren om Dataset op basis van usecase te maken

1. Maak eerst SparkSession

SparkSession is een enkel toegangspunt voor een spark-toepassing waarmee interactie met onderliggende Spark-functionaliteit mogelijk is en Spark met DataFrame en Dataset API's kan worden geprogrammeerd.

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

  • Een gegevensset maken met behulp van basisgegevensstructuur zoals Bereik, Volgorde, Lijst, enz:

Bereik gebruiken

Volgorde gebruiken

Lijst gebruiken

  • Ga als volgt te werk om een ​​gegevensset te maken met de reeks case-klassen door de methode .toDS () aan te roepen:

  • Gegevensset van RDD maken met .toDS ():

  • Om de dataset van Dataframe te maken met Case Class:

  • Om de dataset vanuit Dataframe te maken met behulp van Tuples:

2. Bewerkingen op Spark-gegevensset

  1. Voorbeeld van woorden tellen

  1. Converteer Spark Dataset naar Dataframe

We kunnen Spark Dataset ook converteren naar Datafame en Dataframe API's gebruiken zoals hieronder:

Kenmerken van Spark Dataset

  1. Type veiligheid

Dataset biedt compile-time type veiligheid. Het betekent dat syntaxis, evenals analysefouten van de toepassing, tijdens het compileren worden gecontroleerd voordat deze wordt uitgevoerd.

  1. Onveranderlijkheid

Dataset is ook onveranderlijk zoals RDD en Dataframe. Dit betekent dat we de gemaakte gegevensset niet kunnen wijzigen. Telkens wanneer een nieuwe gegevensset wordt gemaakt wanneer een transformatie op de gegevensset wordt toegepast.

  1. Schema

Dataset is een tabelstructuur in het geheugen met rijen en benoemde kolommen.

  1. Prestaties en optimalisatie

Net als Dataframe, gebruikt de Dataset ook Catalyst Optimization om een ​​geoptimaliseerd logisch en fysiek queryplan te genereren.

  1. Programmeertaal

De dataset api is alleen aanwezig in Java en Scala, die gecompileerde talen zijn, maar niet in Python, een geïnterpreteerde taal.

  1. Luie evaluatie

Net als RDD en Dataframe voert de Dataset ook de luie evaluatie uit. Dit betekent dat de berekening alleen plaatsvindt als er actie wordt uitgevoerd. Spark maakt alleen plannen tijdens de transformatiefase.

  1. Serialisatie en afvalinzameling

Spark-gegevensset maakt geen gebruik van standaard serializers (Kryo of Java serialization). In plaats daarvan maakt het gebruik van Tungsten's snelle in-memory encoders, die de interne structuur van de gegevens begrijpen en objecten efficiënt kunnen transformeren in interne binaire opslag. Het maakt gebruik van off-heap gegevensserialisatie met behulp van Tungsten-encoder en daarom is er geen behoefte aan afvalinzameling.

Conclusie

Dataset is het beste van zowel RDD als Dataframe. RDD biedt compilatie-type veiligheid, maar er is geen automatische optimalisatie. Dataframe biedt automatische optimalisatie, maar het ontbreekt aan compilatie-type beveiliging. Dataset biedt zowel compilatie-type veiligheid als automatische optimalisatie. Daarom is de dataset de beste keuze voor Spark-ontwikkelaars die Java of Scala gebruiken.

Aanbevolen artikelen

Dit is een gids voor Spark Dataset. Hier bespreken we hoe u een Spark-gegevensset op meerdere manieren kunt maken met voorbeelden en functies. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Spark Shell-opdrachten
  2. Spark Interview Vragen
  3. Carrière in Spark
  4. Vonken streamen
  5. Verschillende bewerkingen met betrekking tot Tuples
  6. Spark SQL Dataframe
  7. Soorten joins in Spark SQL (voorbeelden)
  8. Handleiding voor de lijst met Unix Shell-opdrachten
  9. Top 6 componenten van Spark

Categorie: