我正在尝试从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 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%';
只需大写表格的名称即可。
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%';