Skip to content

Commit b5e7398

Browse files
authored
[Fix-17413][DataSource][Hive&Spark]Principal field is not displayed and not used correctly in kerberos env (#17493)
1 parent e066793 commit b5e7398

File tree

2 files changed

+20
-6
lines changed
  • dolphinscheduler-datasource-plugin

2 files changed

+20
-6
lines changed

dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessor.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.apache.dolphinscheduler.spi.enums.DbType;
3131

3232
import org.apache.commons.collections4.MapUtils;
33+
import org.apache.commons.lang3.StringUtils;
3334

3435
import java.io.IOException;
3536
import java.sql.Connection;
@@ -61,6 +62,7 @@ public BaseDataSourceParamDTO createDatasourceParamDTO(String connectionJson) {
6162
hiveDataSourceParamDTO.setLoginUserKeytabUsername(hiveConnectionParam.getLoginUserKeytabUsername());
6263
hiveDataSourceParamDTO.setLoginUserKeytabPath(hiveConnectionParam.getLoginUserKeytabPath());
6364
hiveDataSourceParamDTO.setJavaSecurityKrb5Conf(hiveConnectionParam.getJavaSecurityKrb5Conf());
65+
hiveDataSourceParamDTO.setPrincipal(hiveConnectionParam.getPrincipal());
6466

6567
String[] tmpArray = hiveConnectionParam.getAddress().split(Constants.DOUBLE_SLASH);
6668
StringBuilder hosts = new StringBuilder();
@@ -123,11 +125,16 @@ public String getValidationQuery() {
123125
@Override
124126
public String getJdbcUrl(ConnectionParam connectionParam) {
125127
HiveConnectionParam hiveConnectionParam = (HiveConnectionParam) connectionParam;
126-
String jdbcUrl = hiveConnectionParam.getJdbcUrl();
128+
129+
StringBuilder jdbcUrlBuilder = new StringBuilder(hiveConnectionParam.getJdbcUrl());
130+
if (StringUtils.isNotBlank(hiveConnectionParam.getPrincipal())) {
131+
jdbcUrlBuilder.append(";principal=").append(hiveConnectionParam.getPrincipal());
132+
}
127133
if (MapUtils.isNotEmpty(hiveConnectionParam.getOther())) {
128-
return jdbcUrl + ";" + transformOther(hiveConnectionParam.getOther());
134+
jdbcUrlBuilder.append(";").append(transformOther(hiveConnectionParam.getOther()));
129135
}
130-
return jdbcUrl;
136+
137+
return jdbcUrlBuilder.toString();
131138
}
132139

133140
@Override

dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-spark/src/main/java/org/apache/dolphinscheduler/plugin/datasource/spark/param/SparkDataSourceProcessor.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.apache.dolphinscheduler.spi.enums.DbType;
3131

3232
import org.apache.commons.collections4.MapUtils;
33+
import org.apache.commons.lang3.StringUtils;
3334

3435
import java.io.IOException;
3536
import java.sql.Connection;
@@ -61,6 +62,7 @@ public BaseDataSourceParamDTO createDatasourceParamDTO(String connectionJson) {
6162
sparkDatasourceParamDTO.setJavaSecurityKrb5Conf(connectionParams.getJavaSecurityKrb5Conf());
6263
sparkDatasourceParamDTO.setLoginUserKeytabPath(connectionParams.getLoginUserKeytabPath());
6364
sparkDatasourceParamDTO.setLoginUserKeytabUsername(connectionParams.getLoginUserKeytabUsername());
65+
sparkDatasourceParamDTO.setPrincipal(connectionParams.getPrincipal());
6466

6567
StringBuilder hosts = new StringBuilder();
6668
String[] tmpArray = connectionParams.getAddress().split(Constants.DOUBLE_SLASH);
@@ -125,11 +127,16 @@ public String getValidationQuery() {
125127
@Override
126128
public String getJdbcUrl(ConnectionParam connectionParam) {
127129
SparkConnectionParam sparkConnectionParam = (SparkConnectionParam) connectionParam;
130+
131+
StringBuilder jdbcUrlBuilder = new StringBuilder(sparkConnectionParam.getJdbcUrl());
132+
if (StringUtils.isNotBlank(sparkConnectionParam.getPrincipal())) {
133+
jdbcUrlBuilder.append(";principal=").append(sparkConnectionParam.getPrincipal());
134+
}
128135
if (MapUtils.isNotEmpty(sparkConnectionParam.getOther())) {
129-
return String.format("%s;%s", sparkConnectionParam.getJdbcUrl(),
130-
transformOther(sparkConnectionParam.getOther()));
136+
jdbcUrlBuilder.append(";").append(transformOther(sparkConnectionParam.getOther()));
131137
}
132-
return sparkConnectionParam.getJdbcUrl();
138+
139+
return jdbcUrlBuilder.toString();
133140
}
134141

135142
@Override

0 commit comments

Comments
 (0)