Spark SQL



统计信息在 join 时很重要1

相关参数:

  • spark.sql.autoBroadcastJoinThreshold : 是否使用 BHJ ,默认10MB。
  • spark.sql.cbo.joinRecorder.enabled: 优化多表 join ,默认 false 。

查看统计信息

如何查看 Spark SQL 的统计信息?首先,CBO 必须打开:


spark.conf.set("spark.sql.cbo.enabled", true)

执行:


spark.sql("""ANALYZE TABLE table_name
             COMPUTE STATISTICS""").show(n=50)

spark.sql("""ANALYZE TABLE table_name
             COMPUTE STATISTICS
             FOR COLUMNS column_name""").show(n=50)

spark.sql("DESCRIBE EXTENDED table_name").show(n=50)

spark.sql("DESCRIBE EXTENDED table_name column_name").show()

从 Spark 3.0 起,可以执行:


spark.table(table_name).explain(mode="cost")

参考
  1. David Vrba Ph.D. Spark SQL Beyond Official Documentation. DATA+AI SUMMIT EUROPE 2020
本文链接: https://paxinla.github.io/posts/2021/05/spark-sql.html

知识共享许可协议 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可,欢迎转载、演绎,
但是必须保留本文的署名 Charles(包含链接),且不得用于商业目的。