in seatunnel-datasource/seatunnel-datasource-plugins/datasource-jdbc-hive/src/main/java/org/apache/seatunnel/datasource/plugin/hive/jdbc/HiveJdbcDataSourceChannel.java [116:159]
protected Connection getHiveConnection(Map<String, String> requestParams)
throws IOException, SQLException {
if (MapUtils.isEmpty(requestParams)) {
throw new DataSourcePluginException(
"Hive jdbc request params is null, please check your config");
}
String driverClass =
requestParams.getOrDefault(
HiveJdbcOptionRule.DRIVER.key(), "org.apache.hive.jdbc.HiveDriver");
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
throw new DataSourcePluginException(
"Hive jdbc driver " + driverClass + " not found", e);
}
Properties connProps = new Properties();
boolean isKerberosEnabled =
Boolean.parseBoolean(requestParams.get(HiveJdbcOptionRule.USE_KERBEROS.key()));
if (isKerberosEnabled) {
String krb5ConfPath = requestParams.get(HiveJdbcOptionRule.KRB5_PATH.key());
if (StringUtils.isNotEmpty(krb5ConfPath)) {
System.setProperty("java.security.krb5.conf", krb5ConfPath);
}
Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "Kerberos");
UserGroupInformation.setConfiguration(conf);
String principal = requestParams.get(HiveJdbcOptionRule.KERBEROS_PRINCIPAL.key());
connProps.setProperty("principal", principal);
String keytabPath = requestParams.get(HiveJdbcOptionRule.KERBEROS_KEYTAB_PATH.key());
UserGroupInformation.loginUserFromKeytab(principal, keytabPath);
}
String user = requestParams.get(HiveJdbcOptionRule.USER.key());
String password = requestParams.get(HiveJdbcOptionRule.PASSWORD.key());
if (StringUtils.isNotEmpty(user)) {
connProps.setProperty("user", user);
}
if (StringUtils.isNotEmpty(password)) {
connProps.setProperty("password", password);
}
String jdbcUrl = requestParams.get(HiveJdbcOptionRule.URL.key());
return DriverManager.getConnection(jdbcUrl, connProps);
}