json - 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()
有没有更好的方法来实现同样的目标?提前致谢。
解决方案
我认为创建第一个 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()
推荐阅读
- spring-data-jpa - 最新版本的 Hibernate-Spring 中缺少 JPAMapStore
- typescript - 将 javascript 类转换为 typescript 类:某些属性不可见
- java - 在内部类之外声明一个 int 值
- google-cloud-platform - 是否可以简单地与我的谷歌云服务器上的特定端口通信?
- asp.net - Asp.net 注册存储过程给出错误
- javascript - 如何使用 javascript 将 mp3 字符串转换为声音
- r - 使用带有 ggplotly 的 facet_wrap 的第一个和最后一个面大于中间面
- scala - 根据 Spark Scala 中的特定值修改 DataFrame 值
- python - Python 正则表达式:数据抓取
- 数据
- 数据
- 数据
- c# - C# NullReferenceException 而 EventHandler