Spark SQL, DataFrames et Datasets Guide

Spark SQL est un module Spark pour le traitement des données structurées. Contrairement à l’API Spark RDD de base, les interfaces fourniespar Spark SQL fournissent à Spark plus d’informations sur la structure à la fois des données et du calcul effectué. En interne, Spark SQL utilise ces informations supplémentaires pour effectuer des optimisations supplémentaires. Il existe plusieurs façons d’interagir avec Spark SQL, y compris SQL et l’API Dataset. Lors du calcul d’un résultat, le même moteur d’exécution est utilisé, indépendamment de l’API/du langage que vous utilisez pour exprimer le calcul. Cette unification signifie que les développeurs peuvent facilement passer d’une API à l’autre en fonction de celle qui fournit la manière la plus naturelle d’exprimer une transformation donnée.

Tous les exemples de cette page utilisent des échantillons de données inclus dans la distribution Spark et peuvent être exécutés dans le shell spark-shell, pyspark ou sparkR.

SQL

Une utilisation de Spark SQL est d’exécuter des requêtes SQL.Spark SQL peut également être utilisé pour lire les données d’une installation Hive existante. Pour en savoir plus sur la façon de configurer cette fonctionnalité, veuillez vous reporter à la section Tables Hive. Lorsque vous exécutezSQL à partir d’un autre langage de programmation, les résultats seront renvoyés sous forme de Dataset/DataFrame.Vous pouvez également interagir avec l’interface SQL en utilisant la ligne de commande ou sur JDBC/ODBC.

Datasets et DataFrames

Un Dataset est une collection distribuée de données.Dataset est une nouvelle interface ajoutée dans Spark 1.6 qui offre les avantages des RDD (strongtyping, possibilité d’utiliser de puissantes fonctions lambda) avec les avantages du moteur d’exécution optimisé de Spark SQL. Un Dataset peut être construit à partir d’objets JVM, puis manipulé à l’aide de transformations fonctionnelles (map, flatMap, filter, etc.) L’API Dataset est disponible en Scala et en Java. Python ne dispose pas du support de l’API Dataset. Mais en raison de la nature dynamique de Python,de nombreux avantages de l’API Dataset sont déjà disponibles (par exemple, vous pouvez accéder au champ d’une ligne par son nom naturellementrow.columnName). Le cas de R est similaire.

Un DataFrame est un Dataset organisé en colonnes nommées. Il est conceptuellementéquivalent à une table dans une base de données relationnelle ou un cadre de données dans R/Python, mais avec des optimisations riches sous le capot. Les DataFrames peuvent être construits à partir d’un large éventail de sources telles que : des fichiers de données structurés, des tables dans Hive, des bases de données externes ou des RDDs existants.L’API DataFrame est disponible en Scala,Java, Python et R.En Scala et Java, un DataFrame est représenté par un Dataset de Rows.Dans l’API Scala, DataFrame est simplement un alias de type de Dataset.Alors que, dans l’API Java, les utilisateurs doivent utiliser Dataset<Row> pour représenter un DataFrame.

Dans ce document, nous ferons souvent référence aux ensembles de données Scala/Java de Rows en tant que DataFrames.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.