我有数据存储在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函数像使用通配符一样快速地访问这些数据吗?
暂无答案!
目前还没有任何答案,快来回答吧!