protected Connection getHiveConnection()

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);
    }