HiveSql中一条Sql语句的旅程

今天主要debug一条最简单的sql语句 “select * from test” 。只是跟踪了这条SQL在提交解析器之前做了那些重要的事情
总共有 sessionID、queryID、execID

这里写图片描述
这里写图片描述
这里写图片描述
这个跳转到了SessionState类中的updateThreadName方法

public void updateThreadName() {
  final String sessionId = getSessionId();
  final String logPrefix = getConf().getLogIdVar(sessionId);
  final String currThreadName = Thread.currentThread().getName();
  if (!currThreadName.contains(logPrefix)) {
    final String newThreadName = logPrefix + " " + currThreadName;
    LOG.info("Updating thread name to {}", newThreadName);
    Thread.currentThread().setName(newThreadName);
  }
}

这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

这里写图片描述
这个可以获取用户可以做到 用户行和列权限控制的

这里写图片描述
HiveServer2的性能问题
hive.driver.parallel.compilation参数默认为false,导致HS2只允许同时一个Query编译, 有操作元数据比较多的查询编译读取元数据会比较慢,全局锁会卡住所有其他查询。 需要设置为false,打开允许多个Query同时编译。

这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述

这个是hive一个SQL中变量不能超过40个
这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/paicmis/article/details/79846781