首页 > 解决方案 > Pyspark - 从目录中的每个文件中读取 JSON 并将其放入自己的数据框中

问题描述

我想在每个文件的目录 目录 文件夹结构 Json 中找到的每个文件创建 1 个数据帧,如下所示:

[{
    "a": "Need Help",
    "b": 6377,
    "c": "Member",
    "d": 721,
    "timestamp": 1590990807.475662
  },
  {
    "a": "Need Help",
    "b": 6377,
    "c": "Member",
    "d": 721,
    "timestamp": 1590990807.475673
  },
  {
    "a": "Need Help",
    "b": 6377,
    "c": "Member",
    "d": 721,
    "timestamp": 1590990807.475678
  }]

我可以用下面的代码做到这一点:

rdd = sparkSession.sparkContext.wholeTextFiles("/content/sample_data/test_data")
dict = rdd.collectAsMap()
for row,value in dict.items():
 df = spark.read.json(row)
 df.show()

有没有更好的方法来实现同样的目标?提前致谢。

标签: jsonapache-sparkpyspark

解决方案


我认为创建第一个 rdd 是多余的,为什么不遍历目录中的文本文件并为每个文件创建一个数据框?

import glob

path = /content/sample_data/test_data

all_files = glob.glob(path + "/*.txt")


for filename in all_files:
    df = spark.read.json(filename)
    df.show()

推荐阅读