在Apache Spark中计算HIVE统计数据

问题描述 投票:1回答:2

我正在尝试从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')

根据文档,它是有效的蜂巢查询。这有什么问题?

感谢帮助。

apache-spark hive
2个回答
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%';

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%';
© www.soinside.com 2019 - 2024. All rights reserved.