json (DataFrameReader)

Lädt JSON-Dateien und gibt die Ergebnisse als ein DataFrame. JSON-Zeilen (durch Zeilentrennzeichen getrennte JSON) werden standardmäßig unterstützt. Legen Sie für JSON mit einem Datensatz pro Datei die multiLine Option auf True.

Wenn schema nicht angegeben, liest diese Funktion die Eingabe einmal, um das Eingabeschema zu bestimmen.

Syntax

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

Parameter

Parameter Typ Beschreibung
path str, list oder RDD Ein Pfad zum JSON-Dataset, eine Liste von Pfaden oder eine RDD von Zeichenfolgen, die JSON-Objekte speichern.
schema StructType oder str, optional Ein optionales Eingabeschema als StructType Objekt oder eine DDL-formatierte Zeichenfolge (z. B 'col0 INT, col1 DOUBLE'. ).

Rückkehr

DataFrame

Beispiele

Schreiben Sie einen DataFrame in eine JSON-Datei, und lesen Sie es zurück.

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|
    # +---+-------+

Lesen Sie JSON aus mehreren Verzeichnissen.

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|
    # +---+-----+

Lesen sie JSON mit einem benutzerdefinierten Schema.

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|
    # +----+---+