繁体   English   中英

通过数据块从 ADLS gen2 存储中的多个文件夹中读取文件并创建单个目标文件

[英]Read files from multiple folders from ADLS gen2 storage via databricks and create single target file

我正在使用数据块服务进行分析。 我已经建立了与 ADLS gen2 存储的连接并创建了一个挂载点,现在该容器包含多个文件夹,并且每个月文件夹中都有每个月的镶木地板文件。 我必须阅读所有这些文件并创建一个包含完整月份数据的目标文件。 我如何实现它任何人都可以建议?

假设您的镶木地板文件遵循特定的目录模式,您可以使用通配符

如果您的文件以/mnt/point/folder/YYYY/MM/foo.parquet这样的模式编写,您可以使用/mnt/point/folder/*/*遍历所有 YYYY 和 MM 文件夹和文件

这是一个可重现的 pyspark 示例,假设您有一个名为“data”的挂载点。

df_A = spark.createDataFrame([
    ['a',1],
    ['a',2],
    ['a',3]
], ["Letter", "Number"])
df_B = spark.createDataFrame([
    ['b',1],
    ['b',2],
    ['b',3]
], ["Letter", "Number"])

df_A.write.parquet('/mnt/data/mydata/1999/01')
df_B.write.parquet('/mnt/data/mydata/2001/09')

new_df = spark.read.parquet('/mnt/data/mydata/*/*')

根据@Alex Ott 的评论,如果您的数据已分区(例如,有一个名为 year=1999 的文件夹和名为 month=01、month=02 等的子文件夹),您可以利用分区发现,并且 spark 会更智能地意识到它应该遍历所有子文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM