最近在cdh impala开启kerberos和sentry情况下做sentry的doas发现官方文档写的在连接字符串中加 impala.doas.user是无效的,多方查阅是cdh的HiveJDBCDriver的bug。
经由我们架构师查找最终修改HiveDriver中的HiveConnection类有关解析代码解决了此问题。附上代码
private static final String IMPALA_PROXY_USER="impala.doas.user";
// set the session configuration
Map sessVars = connParams.getSessionVars();
if (sessVars.containsKey(HiveAuthFactory.HS2_PROXY_USER)) {
openConf.put(HiveAuthFactory.HS2_PROXY_USER,
sessVars.get(HiveAuthFactory.HS2_PROXY_USER));
}
//解决impala的代理用户不解析导致无效的问题
if (sessVars.containsKey(IMPALA_PROXY_USER)) {
openConf.put(IMPALA_PROXY_USER,
sessVars.get(IMPALA_PROXY_USER));
}
openReq.setConfiguration(openConf);
sessVars = connParams.getSessionVars();
if (sessVars.containsKey(HiveAuthFactory.HS2_PROXY_USER)) {
openConf.put(HiveAuthFactory.HS2_PROXY_USER,
sessV