json (DataFrameReader)

Läser in JSON-filer och returnerar resultatet som en DataFrame. JSON-rader (nyradsavgränsad JSON) stöds som standard. För JSON med en post per fil anger du multiLine alternativet till True.

Om schema inte anges läser den här funktionen indata en gång för att fastställa indataschemat.

Syntax

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

Parameters

Parameter Type Beskrivning
path str, list eller RDD En sökväg till JSON-datauppsättningen, en lista över sökvägar eller en RDD med strängar som lagrar JSON-objekt.
schema StructType eller str, valfritt Ett valfritt indataschema som ett StructType objekt eller en DDL-formaterad sträng (till exempel 'col0 INT, col1 DOUBLE').

Retur

DataFrame

Exempel

Skriv en DataFrame till en JSON-fil och läs tillbaka den.

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

Läs JSON från flera kataloger.

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

Läs JSON med ett anpassat 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|
    # +----+---+