如何一次性将不同位置的多个文件加载到 pyspark 数据框中

How to load multiple files present in different locations into pyspark dataframe at one go

有没有一种方法可以一次性将多个文件加载到 pyspark 数据帧 (2.0.0) 中。这些文件存在于不同的目录中。或者我可以这样说,我有一个文件存储在 S3 中,分区在 dayserial numeric (20161109) 上,我想加载特定日期的数据(不是文件夹中的所有文件)。一个一个地加载并执行 unionAll 效率不高(我相信)。有没有更好的方法?

您可以通过两种方式实现:

1) 将所有目录重命名为 pattern field=value,例如 day=20161109day=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}').