PySpark Lire JSON()

Pyspark Lire Json



Lorsque vous travaillez avec PySpark DataFrames, il doit être stocké dans PySpark DataFrame si vous souhaitez traiter les données JSON. Après stockage dans le DataFrame, nous pouvons appliquer les différentes opérations et méthodes sur les données. De plus, il y a tellement d'avantages si nous convertissons JSON en PySpark DataFrame car c'est simple et nous pouvons transformer/partitionner les données de manière plus simple.

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 pyspark

Une 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 pyspark

importer 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.