<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>3.2.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>3.2.4</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>4.0.0</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-service</artifactId>
<version>4.0.0</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
此处hive-exec
和 hive-service
需要把部分包剔除,否则影响springboot初始化注入。
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.jdbcUrl=jdbc:hive2://127.0.0.1:10000/testmydb
spring.datasource.hikari.username=root
spring.datasource.hikari.password=xxx
spring.datasource.hikari.driver-class-name=org.apache.hive.jdbc.HiveDriver
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.pool-name=HiveHikariCP
使用hikari cp,调用HiveDriver
@Configuration
public class HiveDataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariDataSource dataSource() {
return new HikariDataSource();
}
@Bean(name = "hiveJdbcTemplate")
public JdbcTemplate hiveJdbcTemplate(@Qualifier("dataSource") DataSource dataSource){
return new JdbcTemplate(dataSource);
}
}
接下来就可以愉快玩耍了
@RestController
@RequestMapping("/api/demo")
public class DemoController {
@Autowired
private DataSource dataSource;
@GetMapping("/databases")
public ResponseEntity<List<String>> getDatabaseNames() throws SQLException {
Statement statement = dataSource.getConnection().createStatement();
boolean showDatabases = statement.execute("show databases");
List<String> databaseNames = new ArrayList<>();
if (showDatabases) {
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()){
databaseNames.add(resultSet.getString(1));
}
}
return ResponseEntity.ok(databaseNames);
}
}