【发布时间】:2016-12-12 13:13:37
【问题描述】:
有没有一种方法可以一次将多个文件加载到 pyspark 数据帧 (2.0.0) 中。这些文件存在于不同的目录中。或者我可以这样说,我有一个文件存储在 S3 中,分区为天数(20161109),我想加载特定日期的数据(不是文件夹内的所有文件)。一个一个加载并执行 unionAll 效率不高(我相信)。有没有更好的办法?
【问题讨论】:
标签: dataframe pyspark apache-spark-2.0
有没有一种方法可以一次将多个文件加载到 pyspark 数据帧 (2.0.0) 中。这些文件存在于不同的目录中。或者我可以这样说,我有一个文件存储在 S3 中,分区为天数(20161109),我想加载特定日期的数据(不是文件夹内的所有文件)。一个一个加载并执行 unionAll 效率不高(我相信)。有没有更好的办法?
【问题讨论】:
标签: dataframe pyspark apache-spark-2.0
您可以通过两种方式实现此目的:
1) 将所有目录重命名为模式字段=值,例如day=20161109、day=20161110 等。然后在父目录上使用spark.read,这个day字段将显示为额外的列,你可以像这样在where中使用它:spark.read.parquet('/path/to/parent/dir').where(col('day').between('20161109', '20161110')
2) 使用Hadoop glob pattern,并以{path1.path2} 的形式添加所有路径,例如:spark.read.parquet('/path/to/{20161109,20161110}')。
【讨论】: