Sujet du contenu :
Lecture de JSON dans le DataFrame PySpark à l'aide de Pandas.read_json()
Lecture de JSON dans PySpark DataFrame à l'aide de Spark.read.json()
Lecture de JSON dans PySpark DataFrame à l'aide de PySpark SQL
Dans ce didacticiel, nous verrons comment lire JSON dans PySpark DataFrame à l'aide de pandas.read_json(), spark.read.json() et spark.sql. Dans tous les scénarios, nous examinerons les différents exemples en considérant les différents formats JSON.
Installez la bibliothèque PySpark avant d'implémenter les exemples suivants.
pip installer pysparkUne fois l'installation réussie, vous pouvez voir la sortie comme suit :
Lecture de JSON dans le DataFrame PySpark à l'aide de Pandas.read_json()
Dans PySpark, la méthode createDataFrame() est utilisée pour créer directement le DataFrame. Ici, nous avons juste besoin de passer le fichier/chemin JSON au fichier JSON via la méthode pandas.read_json(). Cette méthode read_json() prend le nom de fichier/chemin disponible dans le module Pandas. C'est pourquoi il est nécessaire d'importer et d'utiliser le module Pandas.
Syntaxe:
spark_app.createDataFrame(pandas.read_json( 'nom_fichier.json' ))Exemple:
Créons un fichier JSON nommé 'student_skill.json' qui contient 2 enregistrements. Ici, les touches/colonnes sont « Élève 1 » et « Élève 2 ». Les lignes sont nom, âge, compétence1 et compétence2.
importer pyspark
importer des pandas
depuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Utilisation de pandas.read_json()
candidat_skills = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))
candidat_skills.show()
Sortir:
Nous pouvons voir que les données JSON sont converties en PySpark DataFrame avec des colonnes et des lignes spécifiées.
2. Lecture de JSON dans PySpark DataFrame à l'aide de Spark.read.json()
Le read.json() est une méthode similaire à read_json() dans Pandas. Ici, read.json() prend un chemin vers JSON ou directement vers le fichier JSON, et le charge directement dans le PySpark DataFrame. Il n'est pas nécessaire d'utiliser la méthode createDataFrame() dans ce scénario. Si vous souhaitez lire plusieurs fichiers JSON à la fois, nous devons transmettre une liste de noms de fichiers JSON via une liste séparée par une virgule. Tous les enregistrements JSON sont stockés dans un seul DataFrame.
Syntaxe:
Fichier unique - spark_app.read.json( 'nom_fichier.json' )Plusieurs fichiers - spark_app.read.json([ 'fichier1.json' , 'fichier2.json' ,...])
Scénario 1 : Lire JSON ayant une seule ligne
Si votre fichier JSON est au format record1, record2, record3… (une seule ligne), nous pouvons l'appeler JSON avec une seule ligne. Spark traite ces enregistrements et les stocke dans le PySpark DataFrame sous forme de lignes. Chaque enregistrement est une ligne dans le PySpark DataFrame.
Créons un fichier JSON nommé 'candidate_skills.json' qui contient 3 enregistrements. Lisez ce JSON dans le PySpark DataFrame.
importer pyspark
depuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Lire candidate_skills.json dans le DataFrame PySpark
candidat_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )
candidat_skills.show()
Sortir:
Nous pouvons voir que les données JSON sont converties en PySpark DataFrame avec des enregistrements et des noms de colonne spécifiés.
Scénario 2 : Lire JSON ayant plusieurs lignes
Si votre fichier JSON comporte plusieurs lignes, vous devez utiliser la méthode read.option().json() pour passer le paramètre multiline qui doit être défini sur true. Cela nous permet de charger JSON ayant plusieurs lignes dans le PySpark DataFrame.
lecture.option( 'multiligne' , 'vrai' ).json( 'nom_fichier.json' )Créons un fichier JSON nommé 'multi.json' qui contient 3 enregistrements. Lisez ce JSON dans le PySpark DataFrame.
importer pyspark
depuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Lire multi.json (ayant plusieurs lignes) dans le PySpark DataFrame
candidat_skills = linuxhint_spark_app.read.option( 'multiligne' , 'vrai' ).json( 'multi.json' )
candidat_skills.show()
Sortir:
Scénario 3 : Lire plusieurs JSON
Nous avons déjà discuté lors de la phase de démarrage de ce tutoriel concernant plusieurs fichiers JSON. Si vous souhaitez lire plusieurs fichiers JSON à la fois et les stocker dans un seul PySpark DataFrame, nous devons transmettre une liste de noms de fichiers à la méthode read.json().
Créons deux fichiers JSON nommés 'candidate_skills.json' et 'candidate_skills2.json' et chargeons-les dans le PySpark DataFrame.
Le fichier « candidate_skills.json » contient trois enregistrements.
Le fichier « candidate_skill2.json » ne contient qu'un seul enregistrement.
importer pyspark
depuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Lire les fichiers candidate_skills et candidate_skills2 à la fois dans le DataFrame PySpark
candidat_skills = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidate_skills2.json' ])
candidat_skills.show()
Sortir:
Enfin, le DataFrame contient quatre enregistrements. Les trois premiers enregistrements appartiennent au premier JSON et les derniers enregistrements appartiennent au second JSON.
Lecture de JSON dans PySpark DataFrame à l'aide de Spark.read.json()
Le read.json() est une méthode similaire à read_json() dans Pandas. Ici, read.json() prend un chemin vers JSON ou directement vers le fichier JSON et le charge directement dans le PySpark DataFrame. Il n'est pas nécessaire d'utiliser la méthode createDataFrame() dans ce scénario. Si vous souhaitez lire plusieurs fichiers JSON à la fois, nous devons transmettre une liste de noms de fichiers JSON via une liste séparée par une virgule. Tous les enregistrements JSON sont stockés dans un seul DataFrame.
Syntaxe:
Fichier unique - spark_app.read.json( 'nom_fichier.json' )Plusieurs fichiers - spark_app.read.json([ 'fichier1.json' , 'fichier2.json' ,...])
Scénario 1 : Lire JSON ayant une seule ligne
Si votre fichier JSON est au format record1, record2, record3… (ligne unique), nous pouvons l'appeler JSON avec des lignes simples. Spark traite ces enregistrements et les stocke dans le PySpark DataFrame sous forme de lignes. Chaque enregistrement est une ligne dans le PySpark DataFrame.
Créons un fichier JSON nommé 'candidate_skills.json' qui contient 3 enregistrements. Lisez ce JSON dans le PySpark DataFrame.
importer pyspark
depuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Lire candidate_skills.json dans le DataFrame PySpark
candidat_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )
candidat_skills.show()
Sortir:
Nous pouvons voir que les données JSON sont converties en PySpark DataFrame avec des enregistrements et des noms de colonnes spécifiés.
Lecture de JSON dans PySpark DataFrame à l'aide de PySpark SQL
Il peut être possible de créer une vue temporaire de nos données JSON à l'aide de PySpark SQL. Directement, nous pouvons fournir le JSON au moment de la création de la vue temporaire. Regardez la syntaxe suivante. Après cela, nous pouvons utiliser la commande SELECT pour afficher le PySpark DataFrame.
Syntaxe:
spark_app.sql( 'CRÉER UNE VUE TEMPORAIRE VIEW_NAME À L'AIDE DES OPTIONS json (chemin 'nom_fichier.json')' )Ici, le 'VIEW_NAME' est la vue des données JSON et le 'file_name' est le nom du fichier JSON.
Exemple 1:
Considérez le fichier JSON utilisé dans les exemples précédents - 'candidate_skills.json'. Sélectionnez toutes les lignes du DataFrame en utilisant SELECT avec l'opérateur '*'. Ici, * sélectionne toutes les colonnes du PySpark DataFrame.
importer pysparkimporter des pandas
depuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Utilisation de spark.sql pour créer VIEW à partir du JSON
candidat_skills = linuxhint_spark_app.sql( 'CRÉER UNE VUE TEMPORAIRE Candidat_data À L'AIDE DES OPTIONS json (chemin 'candidate_skills.json')' )
# Utilisez la requête SELECT pour sélectionner tous les enregistrements de Candidate_data.
linuxhint_spark_app.sql( 'SELECT * from Candidate_data' ).montrer()
Sortir:
Le nombre total d'enregistrements dans PySpark DataFrame (lu à partir de JSON) est de 3.
Exemple 2 :
Maintenant, filtrez les enregistrements dans le PySpark DataFrame en fonction de la colonne d'âge. Utilisez l'opérateur 'supérieur à' sur l'âge pour obtenir les lignes dont l'âge est supérieur à 22.
# Utilisez la requête SELECT pour sélectionner les enregistrements avec un âge> 22.linuxhint_spark_app.sql( 'SELECT * from Candidate_data where age>22' ).montrer()
Sortir:
Il n'y a qu'un seul enregistrement dans le PySpark DataFrame avec un âge supérieur à 22 ans.
Conclusion
Nous avons appris les trois manières différentes de lire le JSON dans le PySpark DataFrame. Tout d'abord, nous avons appris à utiliser la méthode read_json() disponible dans le module Pandas pour lire JSON dans PySpark DataFrame. Ensuite, nous avons appris à lire les fichiers JSON à une ou plusieurs lignes à l'aide de la méthode spark.read.json() avec option(). Pour lire plusieurs fichiers JSON à la fois, nous devons transmettre une liste de noms de fichiers à cette méthode. À l'aide de PySpark SQL, le fichier JSON est lu dans la vue temporaire et le DataFrame est affiché à l'aide de la requête SELECT.