apache-spark - Apache Spark Stats 集合..
问题描述
我有以下关于 Apache Spark 中表的统计信息收集的问题
- 收集的所有统计数据都存储在哪里?在元存储?
- 在 Spark 和 Hive 共享 Metastore 的系统中,Hive 应用程序在 Hive 表上收集的统计信息是否可供 Spark 优化器使用?同样,Spark 在 Hive 表上收集的统计信息是否可供 Hive 优化器使用?
- 是否可以强制 Spark 收集加载到内存中的 Dataframe 的统计信息或收集从 Dataframe 创建的临时表上的统计信息?
解决方案
它存储在 Hive Metastore 中。特别是作为表属性。此外,像 ORC 和 Parquet 这样的格式具有读者可以使用的每个文件和每个块的统计信息。但是,优化器不使用它。
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',
推荐阅读
- r - 约束神经网络。R中Keras中的自定义损失函数
- google-apps-script - 如何将具有多个值的单个单元格拆分为单个单元格
- python - Apache Beam HTTP 无界源 Python
- javascript - JavaScript base64string -> 二进制值 -> [Integer] ... 性能提升
- reactjs - 带有函数工厂的 useEffect 得到“React Hook useEffect 收到了一个依赖项未知的函数。改为传递一个内联函数”
- javascript - 如何从被调用的组件中取回变量
- reactjs - 使用 react-select 反应多步表单不更新状态
- java - 如何将定时任务的执行延迟两年或更长时间
- r - 更改 R 中的字符(Google 趋势数据)
- c++ - 定义类的类枚举常量而不提供对类构造函数的访问