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

时间:2016-12-12 13:13:37

标签: dataframe pyspark apache-spark-2.0

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

1 个答案:

答案 0 :(得分:0)

您可以通过两种方式实现这一目标:

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}')