今天主要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个