我正在尝试从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')
根据文档,它是有效的配置单元查询。 这有什么问题?
感谢您的帮助。
答案 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%';