Impala的神奇指令「COMPUTE STATS」
来源:互联网 发布:哪里有淘宝店铺出租 编辑:程序博客网 时间:2024/06/05 15:13
项目迭代中用Impala逐步替换原有的Hive作为查询组件,速度有了脱胎换骨的飞跃。但在把原先按列存储的表转换成两个按行存储的表之后,联表查询的表现不那么给力了(原先对Hive的十倍速度优势变成了两倍)。
考虑到项目转用Impala是我的提议,调整存储结构也是我的提议,这个结果确实是个让我丢面子的事情,于是挽起袖子找优化查询的方案。
优化前
Query: select count(a.sn) from usermodel_inter_total_label a join usermodel_inter_total_info bon a.sn = b.sn where a.label = 'porn' and a.heat > 0.1 and b.platform = 'android'Returned 1 row(s) in 36.86s
寻路
先不管三七二十一,按SQL调优的套路来,explain一下发现了一个很隐蔽的warning:
WARNING: The following tables are missing relevant table and/or column statistics.default.usermodel_inter_total_info, default.usermodel_inter_total_label
这种waring,不是处(pian)女(zhi)座(kuang)发现不了!
先不忙,记下来,网上找那坑爹的Tuning Impala Performance文档看看(插个题外话,Impala的中文资料太寒酸了,做数据的矿工们已经全部投奔Spark阵营了么?),眼神掠过Column Statistics和Table Statistics的时候心里一凉,矿工的直觉告诉我「秘密就在这」!
大体意思就是通过预先分析表和列(对联表特别重要)的结构,并把这些信息保存到MetaStore,Impala查询时会利用这些信息优化查询的策略。
哟,这是个自动挡!
然后坑爹的文档就把我指到Hive的「ANALYZE TABLE」去了,试了半天Impala没反应啊,果然不是亲生兄弟~
祭出谷歌大法,噢,终于找到答案了,simple,naive!感觉找回了逝去的青春。
神奇指令
COMPUTE STATS usermodel_inter_total_info;COMPUTE STATS usermodel_inter_total_label;
优化后
Query: select count(a.sn) from usermodel_inter_total_label a join usermodel_inter_total_info bon a.sn = b.sn where a.label = 'porn' and a.heat > 0.1 and b.platform = 'android'Returned 1 row(s) in 3.15s
Cool!10倍的提升,相对Hive20倍的提升,和单表查询一样的迅速!
阅读全文
0 0
- Impala的神奇指令「COMPUTE STATS」
- impala compute 命令
- Memcached的stats命令
- memcached的stats数据
- Stats
- compute和compute by的用法
- linux 神奇的压缩指令与正规表示法
- Linux下的神奇指令——netcat
- DataTable.Compute的用法
- compute方法的强悍
- nova-compute的resource_tracker
- compute
- Impala 使用的端口
- Impala的中文翻译链接
- Impala的分布式查询
- Impala的中文翻译链接
- impala的APPX_COUNT_DISTINCT参数
- impala的操作
- [Codeforces 321E] Ciel and Gondolas
- zcmu-1683: 排列
- 一些截图
- 没有看到过的机械-手
- 经典的水题:求解公共最长子序列(lcs)
- Impala的神奇指令「COMPUTE STATS」
- Android进程间通信(一)- Bundle
- yii 页面缓存
- TensorFlow学习笔记(二)Tensorflow+VScode和Jupyter NoteBook新姿势
- 用SQLCMD操作SQL Server数据库(挖坑以后再填)
- 本机连不到虚拟机vmware
- 策略模式:代替if-else-if
- 第一类Stirling 数 与 第二类Stirling 数
- 最快的异步回调