Aller au contenu principal

JSON (DataFrameReader)

Charge les fichiers JSON et renvoie les résultats sous forme de DataFrame. Les lignes JSON (JSON délimité par des retours à la ligne) sont prises en charge by default. Pour les fichiers JSON avec un seul enregistrement par fichier, définissez l'option multiLine sur True.

Si schema n'est pas spécifié, cette fonction lit l'entrée une fois pour déterminer le schéma d'entrée.

Syntaxe

json(path, schema=None, **options)

parameter

parameter

Type

Description

path

str, list ou RDD

Un chemin vers le dataset JSON, une liste de chemins ou un RDD de chaînes stockant des objets JSON.

schema

StructType ou str, facultatif.

Un schéma d'entrée facultatif en tant qu'objet StructType ou une chaîne au format DDL (par exemple, 'col0 INT, col1 DOUBLE').

parameter

Type

Description

path

str, list ou RDD

Un chemin vers le dataset JSON, une liste de chemins ou un RDD de chaînes stockant des objets JSON.

schema

StructType ou str, facultatif.

Un schéma d'entrée facultatif en tant qu'objet StructType ou une chaîne au format DDL (par exemple, 'col0 INT, col1 DOUBLE').

Renvoie

DataFrame

Exemples

Écrivez un DataFrame dans un fichier JSON et relisez-le.

Python
import tempfile
with tempfile.TemporaryDirectory(prefix="json") as d:
spark.createDataFrame(
[{"age": 100, "name": "Hyukjin"}]
).write.mode("overwrite").format("json").save(d)

spark.read.json(d).show()
# +---+-------+
# |age| name|
# +---+-------+
# |100|Hyukjin|
# +---+-------+

read.json à partir de plusieurs répertoires.

Python
from tempfile import TemporaryDirectory
with TemporaryDirectory(prefix="json2") as d1, TemporaryDirectory(prefix="json3") as d2:
spark.createDataFrame(
[{"age": 30, "name": "Bob"}]
).write.mode("overwrite").format("json").save(d1)
spark.createDataFrame(
[{"age": 25, "name": "Alice"}]
).write.mode("overwrite").format("json").save(d2)

spark.read.json([d1, d2]).show()
# +---+-----+
# |age| name|
# +---+-----+
# | 25|Alice|
# | 30| Bob|
# +---+-----+

read.json avec un schéma personnalisé.

Python
import tempfile
with tempfile.TemporaryDirectory(prefix="json") as d:
spark.createDataFrame(
[{"age": 30, "name": "Bob"}]
).write.mode("overwrite").format("json").save(d)
spark.read.json(d, schema="name STRING, age INT").show()
# +----+---+
# |name|age|
# +----+---+
# | Bob| 30|
# +----+---+