mirror of
https://github.com/dataease/dataease.git
synced 2026-05-20 02:58:10 +08:00
feat: 支持 hive 数据源
This commit is contained in:
@@ -3,6 +3,7 @@ package io.dataease.commons.constants;
|
||||
public enum DatasourceTypes {
|
||||
excel("excel", "excel", "", "", "", "", ""),
|
||||
mysql("mysql", "mysql", "com.mysql.jdbc.Driver", "`", "`", "'", "'"),
|
||||
hive("hive", "hive", "org.apache.hive.jdbc.HiveDriver", "`", "`", "'", "'"),
|
||||
mariadb("mariadb", "mariadb", "com.mysql.jdbc.Driver", "`", "`", "'", "'"),
|
||||
ds_doris("ds_doris", "ds_doris", "com.mysql.jdbc.Driver", "`", "`", "'", "'"),
|
||||
pg("pg", "pg", "org.postgresql.Driver", "\"", "\"", "\"", "\""),
|
||||
|
||||
@@ -53,6 +53,8 @@ public class ProviderFactory implements ApplicationContextAware {
|
||||
return context.getBean("mongoQuery", QueryProvider.class);
|
||||
case redshift:
|
||||
return context.getBean("redshiftQuery", QueryProvider.class);
|
||||
case hive:
|
||||
return context.getBean("hiveQuery", QueryProvider.class);
|
||||
default:
|
||||
return context.getBean("mysqlQuery", QueryProvider.class);
|
||||
}
|
||||
|
||||
@@ -194,10 +194,10 @@ public class EsProvider extends DatasourceProvider {
|
||||
}
|
||||
|
||||
for (String[] row : esReponse.getRows()) {
|
||||
if(row.length == 3 && row[1].equalsIgnoreCase("TABLE") && row[2].equalsIgnoreCase("INDEX")){
|
||||
if(row.length == 3 && row[1].contains("TABLE") && row[2].equalsIgnoreCase("INDEX")){
|
||||
tables.add(row[0]);
|
||||
}
|
||||
if(row.length == 2 && row[1].equalsIgnoreCase("BASE TABLE")){
|
||||
if(row.length == 2 && row[1].contains("TABLE")){
|
||||
tables.add(row[0]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,6 +170,9 @@ public class JdbcProvider extends DatasourceProvider {
|
||||
String f = metaData.getColumnName(j + 1);
|
||||
String l = StringUtils.isNotEmpty(metaData.getColumnLabel(j + 1)) ? metaData.getColumnLabel(j + 1) : f;
|
||||
String t = metaData.getColumnTypeName(j + 1);
|
||||
if(datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.hive.name())){
|
||||
l = l.split("\\.")[1];
|
||||
}
|
||||
TableFiled field = new TableFiled();
|
||||
field.setFieldName(l);
|
||||
field.setRemarks(l);
|
||||
@@ -342,14 +345,25 @@ public class JdbcProvider extends DatasourceProvider {
|
||||
password = redshiftConfigration.getPassword();
|
||||
driver = redshiftConfigration.getDriver();
|
||||
jdbcurl = redshiftConfigration.getJdbc();
|
||||
break;
|
||||
case hive:
|
||||
HiveConfiguration hiveConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), HiveConfiguration.class);
|
||||
username = hiveConfiguration.getUsername();
|
||||
password = hiveConfiguration.getPassword();
|
||||
driver = hiveConfiguration.getDriver();
|
||||
jdbcurl = hiveConfiguration.getJdbc();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Driver driverClass = (Driver) extendedJdbcClassLoader.loadClass(driver).newInstance();
|
||||
props.setProperty("user", username);
|
||||
if (StringUtils.isNotBlank(password)) {
|
||||
props.setProperty("password", password);
|
||||
|
||||
if (StringUtils.isNotBlank(username)) {
|
||||
props.setProperty("user", username);
|
||||
if (StringUtils.isNotBlank(password)) {
|
||||
props.setProperty("password", password);
|
||||
}
|
||||
}
|
||||
|
||||
Connection conn = driverClass.connect(jdbcurl, props);
|
||||
@@ -362,7 +376,7 @@ public class JdbcProvider extends DatasourceProvider {
|
||||
druidDataSource.setInitialSize(jdbcConfiguration.getInitialPoolSize());// 初始连接数
|
||||
druidDataSource.setMinIdle(jdbcConfiguration.getMinPoolSize()); // 最小连接数
|
||||
druidDataSource.setMaxActive(jdbcConfiguration.getMaxPoolSize()); // 最大连接数
|
||||
if(datasourceRequest.getDatasource().getType().equals(DatasourceTypes.mongo.name())){
|
||||
if(datasourceRequest.getDatasource().getType().equals(DatasourceTypes.mongo.name()) || datasourceRequest.getDatasource().getType().equals(DatasourceTypes.hive.name())){
|
||||
WallFilter wallFilter = new WallFilter();
|
||||
wallFilter.setDbType(DatasourceTypes.mysql.name());
|
||||
druidDataSource.setProxyFilters(Arrays.asList(new Filter[]{wallFilter}));
|
||||
@@ -424,6 +438,13 @@ public class JdbcProvider extends DatasourceProvider {
|
||||
dataSource.setDriverClassName(redshiftConfigration.getDriver());
|
||||
dataSource.setUrl(redshiftConfigration.getJdbc());
|
||||
jdbcConfiguration = redshiftConfigration;
|
||||
break;
|
||||
case hive:
|
||||
HiveConfiguration hiveConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), HiveConfiguration.class);
|
||||
dataSource.setPassword(hiveConfiguration.getPassword());
|
||||
dataSource.setDriverClassName(hiveConfiguration.getDriver());
|
||||
dataSource.setUrl(hiveConfiguration.getJdbc());
|
||||
jdbcConfiguration = hiveConfiguration;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -442,7 +463,8 @@ public class JdbcProvider extends DatasourceProvider {
|
||||
case mariadb:
|
||||
case de_doris:
|
||||
case ds_doris:
|
||||
return "show tables;";
|
||||
case hive:
|
||||
return "show tables";
|
||||
case sqlServer:
|
||||
SqlServerConfiguration sqlServerConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), SqlServerConfiguration.class);
|
||||
if(StringUtils.isEmpty(sqlServerConfiguration.getSchema())){
|
||||
|
||||
@@ -188,7 +188,7 @@ public class DataSetTableService {
|
||||
if (datasetTable.getEditType() == 0) {
|
||||
List<String> newFields = sheet.getFields().stream().map(TableFiled::getRemarks).collect(Collectors.toList());
|
||||
if (!oldFields.equals(newFields)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_colume_change"));
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_colume_inconsistent"));
|
||||
}
|
||||
oldFields = newFields;
|
||||
}
|
||||
|
||||
@@ -279,6 +279,7 @@ i18n_msg_type_dataset_sync_success=Dataset synchronization successful
|
||||
i18n_msg_type_dataset_sync_faild=Dataset synchronization failed
|
||||
i18n_data_not_sync=Please sync data first
|
||||
i18n_excel_colume_change=The column name of Excel is inconsistent with the original data set
|
||||
i18n_excel_colume_inconsistent=The column names of the selected sheet pages are inconsistent
|
||||
i18n_timed_task=Timed Task
|
||||
i18n_datasource_connect_error=Data source connection exception:
|
||||
i18n_check_sql_error=Check incremental SQL exception,
|
||||
|
||||
@@ -278,6 +278,7 @@ i18n_msg_type_dataset_sync_success=数据集同步成功
|
||||
i18n_msg_type_dataset_sync_faild=数据集同步失败
|
||||
i18n_data_not_sync=请先完成数据同步
|
||||
i18n_excel_colume_change=Excel的列名与原数据集不一致
|
||||
i18n_excel_colume_inconsistent=所选sheet页面的列名不一致
|
||||
i18n_timed_task=定时任务
|
||||
i18n_datasource_connect_error=数据源连接异常:
|
||||
i18n_check_sql_error=校验增量 SQL 异常,
|
||||
|
||||
@@ -281,6 +281,7 @@ i18n_msg_type_dataset_sync_success=數據集同步成功
|
||||
i18n_msg_type_dataset_sync_faild=數據集同步失敗
|
||||
i18n_data_not_sync=請先完成數據同步
|
||||
i18n_excel_colume_change=Excel的列名與原數據集不一致
|
||||
i18n_excel_colume_inconsistent=所選sheet頁面的列名不一致
|
||||
i18n_timed_task=定時任務
|
||||
i18n_datasource_connect_error=數據源連接異常:
|
||||
i18n_check_sql_error=校驗增量SQL異常,
|
||||
|
||||
Reference in New Issue
Block a user