在Apache Spark中计算HIVE统计数据

时间:2018-04-13 16:32:11

标签: apache-spark hive

我正在尝试从Apache Spark计算HIVE表统计信息:

`sqlCtx.sql('ANALYZE TABLE t1 COMPUTE STATISTICS')`

我还执行语句以查看收集的内容:

sqlCtx.sql('DESC FORMATTED t1')

我可以看到收集了我的统计数据。 但是,当我在HIVE客户端(Ambari)中执行相同的操作时 - 没有显示统计信息。如果它被Spark收集,它只适用于Spark吗? 火花存放在其他地方吗?

另一个问题。

我还计算该表中所有列的统计信息:

sqlCtx.sql('ANALYZE TABLE t1 COMPUTE STATISTICS FOR COLUMNS c1,c2')

但是当我想在spark中看到这个统计数据时,它会因为不支持的sql语句异常而失败:

sqlCtx.sql('DESC FORMATTED t1 c1')

根据文档,它是有效的配置单元查询。 这有什么问题?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

Apache Spark将统计信息存储为“表参数”。 为了能够检索这些统计数据,我们需要连接到HIVE Metastore和。执行如下的查询

select param_key, param_value 
from table_params tp, tbls t 
where tp.tbl_id=t.tbl_id and tbl_name = '<table_name>' 
and param_key like 'spark.sql.stat%';

答案 1 :(得分:0)

大写的表名就可以了。

select param_key, param_value 
from TABLE_PARAMS tp, TBLS t 
where tp.tbl_id=t.tbl_id and tbl_name = '<table_name>' 
and param_key like 'spark.sql.stat%';