python - PYSPARK - 如何读取 S3 中所有子文件夹中的所有 csv 文件?
问题描述
在 Amazon S3 中,我有一个包含大约 30 个子文件夹的文件夹,每个子文件夹中包含一个 csv 文件。
我想要一种从所有子文件夹中读取每个 csv 文件的简单方法——目前,我可以通过指定路径 n 次来做到这一点,但我觉得必须有一种更简洁的方法。
例如dataframe = sqlContext.read.csv([ path1, path2, path3,etc..], header=True)
解决方案
像这样模拟您的情况(使用 jupyter 魔术命令,以便您可以查看文件夹结构)
...只需使用 * ... 还假设每个 csv 具有相同的列数
! ls sub_csv/
print("="*10)
! ls sub_csv/csv1/
! ls sub_csv/csv2/
! ls sub_csv/csv3/
print("="*10)
! cat sub_csv/csv1/*.csv
! cat sub_csv/csv2/*.csv
! cat sub_csv/csv3/*.csv
csv1
csv2
csv3
==========
csv1.csv
csv2.csv
csv3.csv
==========
id
1
id
2
id
3
spark\
.read\
.option("header", "true")\
.csv("sub_csv/*")\
.show()
+---+
| id|
+---+
| 1|
| 2|
| 3|
+---+
推荐阅读
- dynamics-crm - 从 Dynamics 365 CRM 导出带有附件的电子邮件
- java - Java - 不区分大小写的拆分 WITH VARIABLE 拆分字符串
- ruby-on-rails - 使用 Pundit gem 导出所有用户策略
- sql - 在 Oracle 中计算两个字段之间的工作日 (MF)
- python - 蟒蛇基维。如何更改页面布局的方向?
- python - 如何计算 Apache Beam 中的标准差
- python - Django以多对多关系将对象添加到其他对象
- linux - 如何将 .Net 核心 docker 应用程序从 Windows 发布到 Linux 机器?
- reactjs - 如何在 React Native 中将渲染项目设置为状态?
- mysql - 一个查询从其他表值中删除表行