apache-spark - Apache Spark 统计数据集合..

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

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

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

最佳答案

  1. 它存储在 Hive Metastore 中。特别是作为表属性。此外,ORC 和 Parquet 等格式还具有读者可以使用的每个文件和每个 block 的统计信息。但是,优化器不使用它。

  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',

关于apache-spark - Apache Spark 统计数据集合..,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52827880/

相关文章:

csv - 使用DBeaver,当尝试将数据从CSV导出到我的Hive数据库时,导出卡住吗?

pyspark - 转发填充新行以弥补缺失日期

scala - 在 Spark 数组上运行的 Scala 函数是并行的吗?

hadoop - 在 Hive 中获取 sysdate -1

apache-spark - 计算pyspark数组列的累计和

scala - Spark 数据帧检查点清理

scala - 带密码保护的 Spark 数据帧输出压缩(gzip)

dataframe - 如何按特定字段对 Spark DataFrame 中的结构类型数组进行排序?

python - 使用 Databricks PySpark 从 Azure Blob 存储读取多个 CSV 文件

apache-spark - Dataset.rdd 是 Action 还是转换?