HiveServer连接优化
引言
| server | HiveServer名称,同一台机器可以开启多个HiveServer实例 |
| hook | PRE_EXEC_HOOK、POST_EXEC_HOOK,分别表示语句执行开始之前、执行线束之后 |
| queryId | HiveServer内部语句唯一ID |
| queryStr | 具体执行语句,可根据语句复杂度计算工作负载 |
| jobName | 平台自己设置,我们仅仅考虑会转化为MR任务的语句,jobName即为MR JobName |
| preTime | 语句执行之前的时间戳 |
| postTime | 语句执行之后的时间戳 |
QueryPlan queryPlan = hookContext.getQueryPlan();
HiveConf conf = hookContext.getConf();
String queryId = queryPlan.getQueryId();
if (StringUtils.isEmpty(queryId)) {
LOGGER.warn("queryId is null or empty, return");
return;
}
LOGGER.info("queryId: " + queryId);
String queryStr = URLEncoder.encode(queryPlan.getQueryStr(),
CharEncoding.UTF_8);
if (StringUtils.isEmpty(queryStr)) {
LOGGER.warn("queryStr is null or empty, return");
return;
}
LOGGER.info("queryStr: " + queryStr);
String jobName = conf.getVar(HiveConf.ConfVars.HADOOPJOBNAME);
LOGGER.info("jobName: " + jobName);
if (StringUtils.isEmpty(jobName)) {
LOGGER.warn("jobName is null or empty, return");
return;
}
String server = conf.get("hiveserver.execute.hook.server");
if (StringUtils.isEmpty(server)) {
LOGGER.warn("server is null or empty, return");
return;
}
LOGGER.info("server: " + server);
String rest = conf.get("hiveserver.execute.hook.rest");
LOGGER.info("rest: " + rest);
if (StringUtils.isEmpty(rest)) {
LOGGER.warn("rest is null or empty, return");
return;
}
Map<String, String> params = new HashMap<String, String>();
params.put("server", server);
params.put("hook", hookContext.getHookType().toString());
params.put("queryId", queryId);
params.put("queryStr", queryStr);
params.put("jobName", jobName);
params.put("timestamp", String.valueOf(DatetimeUtil.now()));
try {
HttpClientUtil.doPost(rest, params);
} catch (Exception e) {
LOGGER.error("do post error: "
+ ExceptionUtils.getFullStackTrace(e));
}

.png)
HiveServer连接优化的更多相关文章
- mysql优化之连接优化(open-files-limit与table_open_cache)
MySQL打开的文件描述符限制 Can't open file: '.\test\mytable.frm' (errno: 24) OS error code : Too many open file ...
- mysql优化之连接优化
Posted by Money Talks on 2012/02/23 | 第一篇 序章第二篇 连接优化第三篇 索引优化第四篇 查询优化第五篇 到实战中去 连接优化 连接优化主要指客户端连接数据库以及 ...
- MySQL优化二(连接优化和缓存优化)
body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...
- 百度APP移动端网络深度优化实践分享(二):网络连接优化篇
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<二>连接优化>,感谢原作者的无私分享. 一.前言 在<百度APP移动端网 ...
- 【mysql 优化 5】左连接和右连接优化
原文地址:8.2.1.8 Left Join and Right Join Optimization mysql以下列方式实现一个A left join B 连接条件: 1,表B设置为依赖于表A和A所 ...
- MySQL实验 内连接优化order by+limit 以及添加索引再次改进
MySQL实验 内连接优化order by+limit 以及添加索引再次改进 在进行子查询优化双参数limit时我萌生了测试更加符合实际生产需要的ORDER BY + LIMIT的想法,或许我们也可以 ...
- 网络编程Netty IoT百万长连接优化
目录 IoT推送系统 IoT是什么 IoT推送系统的设计 心跳检测机制 简述心跳检测 心跳检测机制代码示例 百万长连接优化 连接优化代码示例 TCP连接四元组 配置优化 IoT推送系统 IoT是什么 ...
- http连接优化
http连接的性能优化 并行连接(能够同一时候和多台server建立HTTP连接) 持久连接 管道化连接 复用的连接 并行连接 长处: 并行连接能够在带宽资源充足的情况下同一时候建立多个HTTP连接, ...
- 【mysql 优化 4】嵌套连接优化
原文地址:Nested Join Optimization 与SQL标准相比,table_factor的语法被扩展.后者仅接受table_reference,而不是一对括号内的列表.如果我们将tabl ...
随机推荐
- 关于OS_PRIO_SELF的说明
在看ucosii 中关于删除任务的函数 OSTaskDel 时看到 if (prio == OS_PRIO_SELF) { /* See ...
- [Angular 2] Custom Validtors
Create a custom validtor which only accepts the string start with '123'; function skuValidator(contr ...
- sync fsync fdatasync ---systemtap跟踪
aa.stp: probe kernel .function ( "sys_sync" ) { printf ( "probfunc:%s fun:%s\n", ...
- [转] nodeJS的post提交简单实现
index.js: ? 1 2 3 4 5 6 7 8 var server = require('./server'); var router = require('./route'); var r ...
- mysql复习增删改查
select * from torder where status='退款申请' UPDATE torder SET `status`='退款申请' WHERE status='等待付款' and i ...
- ASP.NET MVC 几种 Filter 的执行过程源码解析
一.前言 之前也阅读过MVC的源码,并了解过各个模块的运行原理和执行过程,但都没有形成文章(所以也忘得特别快),总感觉分析源码是大神的工作,而且很多 人觉得平时根本不需要知道这些,会用就行了.其实阅读 ...
- (转)ThinkPHP3.0 使用分组后路径访问无效的解决方法!
注意,清除Runtime,就是清除缓存,很重要,妹的,调试了一下午,总是加上Home目录分组就找不到页面,直接放到action下就行,原来是缓存搞得鬼,另外要在入口文件开启‘APP_DEBUG’ 在T ...
- maven update 以后报错。
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start com ...
- hello,boke
我一名学习软件工程金融服务工程的学生,简单来说就是学习计算机类的,对于自己的介绍,从平时生活中来说吧,我一直处于一种很中规中矩的生活状态里,平时玩玩手机.追追剧.和室友一起去图书馆自习,考前拼命复习两 ...
- 重新开始学习javase_控制程序流程
@学习thinking in java 二.控制程序流程 负数使用 Java 运算符:运算符以一个或多个自变量为基础,可生成一个新值.自变量采用与原始方法调用不同的一种形式,但效果是相同的.根据以前写 ...