首页 > 试题广场 >

某数据仓库的分区表按日期分区,当执行`SELECT * FR

[单选题]
某数据仓库的分区表按日期分区,当执行`SELECT * FROM sales WHERE dt = '2023-08-15'`查询时,发现扫描了所有分区目录。最可能的原因是:
  • 未启用Metastore分区过滤
  • 数据未按日期排序
  • 分区字段未作为查询条件
  • HDFS块大小设置过大
在实际开发中,导致分区过滤失效的常见原因通常有以下几种:
  1. 配置开关被关闭:比如在 Spark 中,如果配置项 spark.sql.hive.metastore.partition.pruning.timestamps.enabled 被误设为 false,就会导致时间戳类型的分区无法被精准过滤,从而引发全表扫描。
  2. 在分区字段上使用了函数:例如WHERE substr(dt, 1, 7) = '2023-08',Metastore 无法直接通过原始的分区名进行匹配,只能扫描所有分区,再逐行计算函数来过滤。
  3. 数据类型不匹配:分区字段在元数据中是 String 类型,但查询时传入了其他类型且发生了隐式转换失败,也可能导致过滤失效。
发表于 今天 09:07:35 回复(0)