提升 Hive Query 执行效率 - Hive LLAP】的更多相关文章

从 Hive 刚推出到现在,得益于社区对它的不断贡献,使得 Hive执行 query 效率显著提升.其中比较有代表性的功能如 Tez (将多个 job整合为一个DAG job)以及 CBO(Cost-based-optimization). Hive 在 2.0 版本以后推出了一个新特性名为 LLAP(Live Long And Process),它可以显著提高 hive query的效率. LLAP提供了一种混合模型,它包含一个长驻进程,用于直接与DataNode 进行IO交互,并紧密地集成在…
系统环境:微软云Linux DS12系列.Centos6.5 .MySQL 5.7.10.生产环境,step1,step2是案例,精彩的剖析部分在step3,step4. 1.慢sql语句大概需要13秒 原来的sql语句要13秒,sql如下: SELECT (SELECT COUNT(*) FROM TB_BIS_POS_DEVICE t1, TB_BIS_MERCHANT t2 WHERE t1.`PROJECT_ID` = '1024' AND t1.MERCHANT_ID = t2.ID…
hive 2.1 hive执行sql有两种方式: 执行hive命令,又细分为hive -e,hive -f,hive交互式: 执行beeline命令,beeline会连接远程thrift server: 下面分别看这些场景下sql是怎样被执行的: 1 hive命令 启动命令 启动hive客户端命令 $HIVE_HOME/bin/hive 等价于 $HIVE_HOME/bin/hive --service cli 会调用 $HIVE_HOME/bin/ext/cli.sh 实际启动类为:org.a…
hive执行sql提交到yarn上的任务名字是被处理过的,通常只能显示sql的前边一段和最后几个字符,这样就会带来一些问题: 1)相近时间提交了几个相近的sql,相互之间无法区分: 2)一个任务有问题,想看下这个任务具体执行的是什么?是谁的任务? 通过以下方法可以查看: 1)如果任务正在running,进入yarn的ApplicationMaster页面,进入job,点击configuration,右上角过滤框输入“hive.query.string”即可,如图: 2)如果任务已经结束,进入hi…
在Hive中执行DDL之类的SQL语句时遇到的一个问题 作者:天齐 遇到的问题如下: hive> create table ehr_base(id string); FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:For direct MetaStore DB connections, we don't support retries…
HIVE-如何查看执行日志 HIVE既然是运行在hadoop上,最后又被翻译为MapReduce程序,通过yarn来执行.所以我们如果想解决HIVE中出现的错误,需要分成几个过程 HIVE自身翻译成为MR之前的解析错误 Hadoop文件系统的错误 YARN调度过程中的错误 2,3过程中的错误,请参考hadoop相关的教程,这里只是提醒大家思考的时候需要考虑到这两个方面的原因.搞清楚哪一个过程出问题之后采取进一步分析. 1.HIVE默认log文件保存的地方 /tmp/<user.name>文件夹…
无论你通过哪种方式连接Hive(如Hive Cli.HiveServer2),一个HQL语句都要经过Driver的解析和执行,主要涉及HQL解析.编译.优化器处理.执行器执行四个方面. 以Hive目前原生支持计算引擎MapReduce为例,具体处理流程如下: HQL解析生成AST语法树Antlr定义SQL的语法规则,完成SQL词法和语法解析,将SQL转化为抽象语法树AST Tree 语法分析得到QueryBlock遍历AST Tree,抽象出查询的基本组成单元QueryBlock 生成逻辑执行计…
hive语句执行顺序 msyql语句执行顺序 代码写的顺序: select ... from... where.... group by... having... order by.. 或者 from ... select ... 代码的执行顺序: from... where...group by... having.... select ... order by... hive 语句执行顺序 大致顺序 from... where.... select...group by... having…
hive 2.1 一 问题 最近有一个场景,要向一个表的多个分区写数据,为了缩短执行时间,采用并发的方式,多个sql同时执行,分别写不同的分区,同时开启动态分区: set hive.exec.dynamic.partition=true insert overwrite table test_table partition(dt) select * from test_table_another where dt = 1; 结果发现只有1个sql运行,其他sql都会卡住:查看hive thrif…
问题现象 写了一个简单的shell脚本调用hive执行组装的sql,在执行时总是报cannot recognize input near '<EOF>' in select clause错误, 单独在hive提示符下却能正常执行. #!/bin/bash keyname="type" sql=" select tags['$keyname'] from user_tags " echo ${sql} hive -e ${sql} 执行时打印的错误日志:…