json (DataFrameReader)

Загружает JSON-файлы и возвращает результаты в виде DataFrame. Строки JSON (json с разделителями newline) поддерживаются по умолчанию. Для JSON с одной записью multiLine для каждого файла задайте для параметра Trueзначение .

Если schema это не указано, эта функция считывает входные данные один раз, чтобы определить входную схему.

Синтаксис

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

Параметры

Параметр Тип Описание
path str, list или RDD Путь к набору данных JSON, списку путей или RDD строк, которые хранят объекты JSON.
schema StructType или str, необязательный Необязательная входная схема в виде StructType объекта или отформатированного DDL-строки (например, 'col0 INT, col1 DOUBLE').

Возвраты

DataFrame

Примеры

Напишите кадр данных в JSON-файл и считывает его обратно.

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

Чтение JSON из нескольких каталогов.

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

Чтение JSON с помощью пользовательской схемы.

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