是的,如果您将指定输入的方法更改为hadoop全局模式,则是可能的,例如:
files = 's3a://dev/2017/01/{02,03}/data.parquet'df = session.read.parquet(files)
您可以在Hadoop
javadoc中阅读有关模式的更多信息。
但是,我认为这不是按时间(按您的情况按天)分区的数据的一种优雅的处理方式。如果您能够这样重命名目录:
s3a://dev/2017/01/03/data.parquet
->s3a://dev/day=2017-01-03/data.parquet
s3a://dev/2017/01/02/data.parquet
->s3a://dev/day=2017-01-02/data.parquet
那么您可以利用Spark分区架构并通过以下方式读取数据:
session.read.parquet('s3a://dev/') .where(col('day').between('2017-01-02', '2017-01-03')
这种方式也将省略空目录/不存在的目录。Additionall列
day将出现在数据框中(在spark <2.1.0中为字符串,在spark> =
2.1.0中为datetime),因此您将知道每条记录存在于哪个目录中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)