如何从多个文件夹读取到单个数据框
Posted
技术标签:
【中文标题】如何从多个文件夹读取到单个数据框【英文标题】:How to read from multiple folders into single Dataframe 【发布时间】:2018-05-30 20:44:41 【问题描述】:我在每天创建的文件夹中有数据。
例如:以下是 AWS S3 中全年(2017 年)的数据文件夹格式,即 365 个文件夹
student_id=20170415
student_id=20170416
student_id=20170417
student_id=20170418
每个文件夹都有多个拼花格式的数据分区。
现在我只想读取过去 6 个月(180 天/180 个文件夹)的数据并在几列上执行一些逻辑。
如何将过去的 180 个文件夹读入单个数据框,我不想使用联合(即,不想将每天的数据文件夹分别读入每个单独的数据框,然后再将所有文件夹合并成巨型数据框,不,我不想那样做)。
我正在使用 Spark 2.0 和 Scala
【问题讨论】:
【参考方案1】:您可以为目录名称创建一个regex,如下所示,如果您只需要文件中的内容,请使用 SparkSession.read,如果您想要 [K,V] 对,例如 [filename,record,请使用 sparkContext.wholeTextFiles ]
val inputpath="/root/path/todir/20150[1-6][0-3]*"//reads only first six months folder(01-06)
spark.sparkContext.wholeTextFiles(inputpath).toDF().show(1000) //Gives [K,V]
val data=spark.read.csv(inputpath).show(10000) //Gives only content
两者都会产生一个 DF。对于 sparkSession.read,大小将是文件夹数 * 每个文件中的行数,对于 SparkContext.wholeTextFiles,它将是文件夹数 * 文件数
【讨论】:
以上是关于如何从多个文件夹读取到单个数据框的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pyarrow 从 S3 读取镶木地板文件列表作为熊猫数据框?
根据文件名将目录中的多个 .xlsx 文件读取到单独的 Pandas 数据框中