json (DataFrameReader)

Carrega ficheiros JSON e devolve os resultados como um DataFrame. JSON Lines (JSON delimitado por novas linhas) é suportado por defeito. Para JSON com um registo por ficheiro, defina a multiLine opção para True.

Se schema não for especificado, esta função lê a entrada uma vez para determinar o esquema de entrada.

Sintaxe

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

Parâmetros

Parâmetro Tipo Descrição
path str, list ou RDD Um caminho para o conjunto de dados JSON, uma lista de caminhos ou um RDD de strings que armazenam objetos JSON.
schema StructType ou str, opcional Um esquema de entrada opcional como StructType objeto ou uma cadeia formatada em DDL (por exemplo, 'col0 INT, col1 DOUBLE').

Devoluções

DataFrame

Exemplos

Escreve um DataFrame num ficheiro JSON e lê-o.

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ê JSON de vários diretórios.

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

Leia JSON com um esquema personalizado.

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