Spark SQL, DataFrames en Datasets Guide

Spark SQL is een Spark module voor gestructureerde dataverwerking. In tegenstelling tot de basis Spark RDD API, voorzien de interfaces van Spark SQL Spark van meer informatie over de structuur van zowel de data als de berekeningen die worden uitgevoerd. Intern gebruikt Spark SQL deze extra informatie om extra optimalisaties uit te voeren. Er zijn verschillende manieren om te communiceren met Spark SQL, waaronder SQL en de Dataset API. Bij het berekenen van een resultaat wordt dezelfde executie engine gebruikt, onafhankelijk van welke API/taal je gebruikt om de berekening uit te voeren. Deze unificatie betekent dat ontwikkelaars gemakkelijk heen en weer kunnen schakelen tussen verschillende API’s op basis van welke de meest natuurlijke manier biedt om een bepaalde transformatie uit te drukken.

Alle voorbeelden op deze pagina maken gebruik van voorbeeldgegevens die in de Spark-distributie zijn opgenomen en kunnen worden uitgevoerd in de spark-shell, pyspark shell, of sparkR shell.

SQL

Een van de toepassingen van Spark SQL is het uitvoeren van SQL-query’s. Spark SQL kan ook worden gebruikt om gegevens uit een bestaande Hive-installatie te lezen. Voor meer informatie over het configureren van deze functie, raadpleeg het gedeelte over Hive tabellen. Bij het uitvoeren van SQL vanuit een andere programmeertaal worden de resultaten geretourneerd als een Dataset/DataFrame.U kunt ook communiceren met de SQL interface via de command-line of via JDBC/ODBC.

Datasets en DataFrames

Een Dataset is een gedistribueerde verzameling van gegevens.Dataset is een nieuwe interface toegevoegd in Spark 1.6 die de voordelen van RDDs (strongtyping, mogelijkheid om krachtige lambda functies te gebruiken) biedt met de voordelen van Spark SQL’s geoptimaliseerde executie engine. Een Dataset kan worden opgebouwd uit JVM objecten en vervolgens worden gemanipuleerd met behulp van functionele transformaties (map, flatMap, filter, etc.). De Dataset API is beschikbaar in Scala en Java. Python heeft geen ondersteuning voor de Dataset API. Maar door de dynamische aard van Python zijn veel van de voordelen van de Dataset API al beschikbaar (b.v. u kunt het veld van een rij natuurlijk op naam benaderenrow.columnName). De zaak voor R is vergelijkbaar.

Een DataFrame is een Dataset georganiseerd in benoemde kolommen. Het is conceptueel gelijkwaardig aan een tabel in een relationele database of een dataframe in R/Python, maar met rijkere optimalisaties onder de motorkap. DataFrames kunnen worden geconstrueerd uit een breed scala van bronnen zoals: gestructureerde databestanden, tabellen in Hive, externe databases, of bestaande RDDs.De DataFrame API is beschikbaar in Scala, Java, Python, en R.In Scala en Java, wordt een DataFrame gerepresenteerd door een Dataset van Rows.In de Scala API, DataFrame is gewoon een type alias van Dataset.Terwijl, in Java API, gebruikers moeten Dataset<Row> gebruiken om een DataFrame te vertegenwoordigen.

Doorheen dit document, zullen we vaak verwijzen naar Scala/Java Datasets van Rows als DataFrames.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.