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