You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个特定结构的JSON文件读取为PySpark DataFrame

用PySpark读取多个Split格式的JSON文件生成DataFrame

你的JSON文件采用了split格式(包含columns列名字段和data行数据字段),PySpark没有直接对应orient='split'的参数,需要手动处理结构来生成目标DataFrame,以下是具体实现步骤:

实现代码

1. 初始化SparkSession

from pyspark.sql import SparkSession
from pyspark.sql.functions import explode, col

# 初始化SparkSession(如果未创建)
spark = SparkSession.builder \
    .appName("ReadSplitStyleJSON") \
    .getOrCreate()

2. 读取多个JSON文件

使用通配符匹配目录下的所有目标JSON文件(支持本地路径或HDFS路径):

# 读取目录下所有JSON文件,替换为你的实际路径
raw_df = spark.read.json("/path/to/your/json/files/*.json")

3. 转换为目标DataFrame

先将data字段中的数组展开为单行数据,再根据columns字段映射列名:

# 展开data中的每一行数据
exploded_df = raw_df.select("columns", explode("data").alias("row_data"))

# 获取列名列表(假设所有JSON文件的columns一致)
column_names = exploded_df.select("columns").first()[0]

# 将row_data中的元素映射到对应的列名
final_df = exploded_df.select(
    *[col("row_data")[idx].alias(col_name) for idx, col_name in enumerate(column_names)]
)

4. 验证结果

final_df.show()

输出示例:

+-------+-------+-------+
|Column1|Column2|Column3|
+-------+-------+-------+
|      1|      2|      3|
|      4|      5|      6|
|      7|      8|      9|
|     10|     11|     12|
+-------+-------+-------+

注意事项

  • 如果不同JSON文件的columns字段不一致,需要先检查列名一致性,或动态处理列映射逻辑(比如取所有文件列名的并集,缺失值补null)。
  • 若文件数量极大,Spark的分布式读取会比Pandas更高效,无需手动合并多个文件。

内容的提问来源于stack exchange,提问作者Lalit Chahal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:55:18