Compartilhar via


json (DataFrameReader)

Carrega arquivos JSON e retorna os resultados como um DataFrame. As linhas JSON (JSON delimitado por nova linha) têm suporte por padrão. Para JSON com um registro por arquivo, defina a opção multiLine como True.

Se schema não for especificado, essa função lerá 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 cadeias de caracteres que armazenam objetos JSON.
schema StructType ou str, opcional Um esquema de entrada opcional como um StructType objeto ou uma cadeia de caracteres formatada em DDL (por exemplo, 'col0 INT, col1 DOUBLE').

Devoluções

DataFrame

Exemplos

Escreva um DataFrame em um arquivo JSON e leia-o novamente.

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

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