Condividi tramite


json (DataFrameReader)

Carica i file JSON e restituisce i risultati come .DataFrame Le righe JSON (JSON delimitato da nuova riga) sono supportate per impostazione predefinita. Per JSON con un record per ogni file, impostare l'opzione multiLine su True.

Se schema non viene specificato, questa funzione legge l'input una volta per determinare lo schema di input.

Sintassi

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

Parametri

Parametro Tipo Descrizione
path str, list o RDD Percorso del set di dati JSON, un elenco di percorsi o un RDD di stringhe che archiviano oggetti JSON.
schema StructType o str, facoltativo Schema di input facoltativo come StructType oggetto o stringa in formato DDL ,ad esempio 'col0 INT, col1 DOUBLE'.

Restituzioni

DataFrame

Examples

Scrivere un dataframe in un file JSON e leggerlo di nuovo.

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

Leggere JSON da più directory.

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

Leggere JSON con uno schema personalizzato.

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