Spark SQL - Fichiers Parquet

Parquet est un format en colonnes, pris en charge par de nombreux systèmes de traitement de données. Les avantages d'avoir un stockage en colonne sont les suivants -

  • Le stockage en colonne limite les opérations d'E / S.

  • Le stockage en colonne peut récupérer des colonnes spécifiques auxquelles vous devez accéder.

  • Le stockage en colonne consomme moins d'espace.

  • Le stockage en colonne donne des données mieux résumées et suit un codage spécifique au type.

Spark SQL prend en charge à la fois la lecture et l'écriture de fichiers parquet qui capturent automatiquement le schéma des données d'origine. Comme les jeux de données JSON, les fichiers parquet suivent la même procédure.

Jetons un autre regard sur le même exemple de employee enregistrer les données nommées employee.parquet placé dans le même répertoire que spark-shell.

Given data- Ne vous souciez pas de convertir les données d'entrée des fiches des employés au format parquet. Nous utilisons les commandes suivantes qui convertissent les données RDD en fichier Parquet. Placer leemployee.json document, que nous avons utilisé comme fichier d'entrée dans nos exemples précédents.

$ spark-shell
Scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
Scala> val employee = sqlContext.read.json(“emplaoyee”)
Scala> employee.write.parquet(“employee.parquet”)

Il n'est pas possible de vous montrer la lime parquet. Il s'agit d'une structure de répertoires que vous pouvez trouver dans le répertoire courant. Si vous souhaitez voir la structure des répertoires et des fichiers, utilisez la commande suivante.

$ cd employee.parquet/

$ ls
_common_metadata
Part-r-00001.gz.parquet
_metadata
_SUCCESS

Les commandes suivantes sont utilisées pour lire, s'inscrire dans la table et y appliquer certaines requêtes.

Ouvrez Spark Shell

Démarrez le shell Spark en utilisant l'exemple suivant

$ spark-shell

Créer un objet SQLContext

Générez SQLContext à l'aide de la commande suivante. Ici,sc signifie un objet SparkContext.

scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)

Lire l'entrée à partir d'un fichier texte

Créez un RDD DataFrame en lisant une donnée du fichier parquet nommé employee.parquet en utilisant l'instruction suivante.

scala> val parqfile = sqlContext.read.parquet(“employee.parquet”)

Stocker le DataFrame dans la table

Utilisez la commande suivante pour stocker les données DataFrame dans une table nommée employee. Après cette commande, nous pouvons y appliquer tous les types d'instructions SQL.

scala> Parqfile.registerTempTable(“employee”)

La table des employés est prête. Passons maintenant quelques requêtes SQL sur la table en utilisant la méthodeSQLContext.sql().

Sélectionner une requête sur DataFrame

Utilisez la commande suivante pour sélectionner tous les enregistrements de employeetable. Ici, nous utilisons la variableallrecordspour capturer toutes les données des enregistrements. Pour afficher ces enregistrements, appelezshow() méthode là-dessus.

scala> val allrecords = sqlContext.sql("SELeCT * FROM employee")

Pour voir les données de résultat de allrecords DataFrame, utilisez la commande suivante.

scala> allrecords.show()

Production

+------+--------+----+
|  id  | name   |age |
+------+--------+----+
| 1201 | satish | 25 |
| 1202 | krishna| 28 |
| 1203 | amith  | 39 |
| 1204 | javed  | 23 |
| 1205 | prudvi | 23 |
+------+--------+----+