使用通配符与spark过滤器访问awss3

gstyhher  于 2021-07-13  发布在  Spark
关注(0)|答案(0)|浏览(247)

我有数据存储在Parquet文件按日期划分。
当我尝试使用spark访问它们时,我发现使用如下所示的spark过滤器:

basepath = 's3a://base/path/'
df_sp = sparkSession.read.parquet(basepath).filter((func.col('date_hour')>='2021-01-20-00')&(func.col('date_hour')<'2021-01-30-00'))
df_sp.count()

比在路径名中使用通配符表达式慢大约10倍:

basepath = 's3a://base/path/date_hour=2020-12-2*-00/'
df_sp = sparkSession.read.parquet(basepath)
df_sp.count()

当我在spark中查看物理计划时,filter版本使用的是分区过滤器,所以我认为它可能会很快。
为什么Spark过滤器速度慢?我可以使用本机spark函数像使用通配符一样快速地访问这些数据吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题