有没有办法可以一次性将多个文件加载到pyspark dataframe(2.0.0)中。这些文件存在于不同的目录中。或者我可以这样说,我有一个存储在S3中的文件,其中包含dayserial数字(20161109)上的分区,我想加载特定日期的数据(不是文件夹中的所有文件)。逐个加载并做unionAll效率不高(我相信)。还有更好的方法吗?
答案 0 :(得分:0)
您可以通过两种方式实现这一目标:
1)将所有目录重命名为pattern field = value,例如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}')
。