【问题标题】:Apache Spark Stats collection..Apache Spark Stats 集合..
【发布时间】:2019-03-20 12:56:36
【问题描述】:

我有以下关于 Apache Spark 中表的统计信息收集的问题

  1. 收集的所有统计信息都存储在哪里?在 Metastore 中?
  2. 在 Spark 和 Hive 共享 Metastore 的系统中,Hive 应用程序在 Hive 表上收集的统计信息是否可供 Spark 优化器使用?同样,Spark 在 Hive 表上收集的统计信息是否可供 Hive 优化器使用?
  3. 是否可以强制 Spark 收集加载到内存中的 Dataframe 的统计信息或收集从 Dataframe 创建的临时表上的统计信息?

【问题讨论】:

标签: apache-spark hive apache-spark-sql query-optimization


【解决方案1】:
  1. 它存储在 Hive Metastore 中。特别是作为表属性。此外,像 ORC 和 Parquet 这样的格式具有读者可以使用的每个文件和每个块的统计信息。但是优化器不使用它。

  2. Spark 和 Hive 使用不同的参数名称来存储统计信息。所以不幸的是,他们不能使用其他引擎收集的统计信息。

具体来说,在Spark中进行统计后,表属性有:

TBLPROPERTIES (
  'numFiles'='1', 
  'numRows'='-1', 
  'rawDataSize'='-1', 
  'spark.sql.statistics.numRows'='111111', 
  'spark.sql.statistics.totalSize'='11111', 
  'totalSize'='111111',

在 Hive 中收集统计信息后,表属性有:

TBLPROPERTIES ( 
  'numFiles'='1', 
  'numRows'='1111111', 
  'rawDataSize'='1111111',

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多