json (DataFrameReader)

JSON ファイルを読み込み、結果を DataFrameとして返します。 JSON 行 (改行区切り JSON) は、既定でサポートされています。 ファイルごとに 1 つのレコードを含む JSON の場合は、 multiLine オプションを True に設定します。

schemaが指定されていない場合、この関数は入力を 1 回読み取って入力スキーマを決定します。

構文

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

パラメーター

パラメーター タイプ 説明
path str、list、または RDD JSON データセットへのパス、パスの一覧、または JSON オブジェクトを格納する文字列の RDD。
schema StructType または str(省略可能) StructType オブジェクトまたは DDL 形式の文字列 (たとえば、'col0 INT, col1 DOUBLE') としての省略可能な入力スキーマ。

返品

DataFrame

例示

JSON ファイルに DataFrame を書き込み、読み戻します。

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