我正在开发一个基于spring的java web项目 . 我想使用Spring JdbcTemplate连接到hive . 但是,当我测试我的服务时,它出现了这个错误消息
“org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取JDBC连接;嵌套异常是org.apache.commons.dbcp.SQLNestedException:无法加载JDBC驱动程序类'org.apache.hadoop.hive.jdbc.HiveDrive'” .
该项目由idea maven创建,但是hive jdbc驱动程序是一个本地jar(它位于WEB-INF / lib) . 所以我不确定错误是由我的项目仍然无法识别本地jdbc驱动程序jar或仅因为JdbcTemplate不支持hive连接的问题引起的 . 有人可以帮我搞清楚吗?先感谢您 .
这是我的代码:
JdbcTemplate定义:
<bean id="dataSourceTDW" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSourceTDW"/>
</bean>
DAO类:
@Repository(value = "tdwQueryImp")
public class QueryDAOImp implements QueryDAO {
@Autowired
JdbcTemplate jdbcTemplate;
public List<Map<String,Object>> execute(String sql) {
return jdbcTemplate.queryForList(sql);
}
}
2 回答
我通过将数据源类从
org.apache.commons.dbcp.BasicDataSource
更改为org.springframework.jdbc.datasource.SimpleDriverDataSource
来解决了我的问题 .以下是bean配置:
你可以参考以下链接:
http://saurzcode.in/2015/01/connect-hiveserver2-service-jdbc-client/
和更多
http://hadooptutorial.info/hive-jdbc-client-example/
https://community.hortonworks.com/articles/53629/writing-a-spring-boot-microservices-to-access-hive.html