Я пытаюсь создать DataSource для своего шага, который использует драйвер Cloudera Hive Server 2 для подключения к таблице в Hadoop. Хотя я добился успеха с этим драйвером в других случаях использования, попытка использовать его в Spring Batch выдает следующую ошибку:
Caused by: java.lang.IllegalArgumentException: DatabaseType not found for product name: [Apache Hive]
Я создал источник данных в application.yml
spring:
datasource:
url: <URL>
username:
password:
driver-class-name: com.cloudera.hive.jdbc4.HS2Driver
Я заметил, что этот тип базы данных не поддерживается в списке, найденном в DatabaseType.java. Что расстраивает, я не могу использовать драйвер Apache Hive для своего подключения из-за других проблем, поэтому мне нужно найти способ сообщить Spring, что это действительный пул соединений, или даже обмануть его, думая, что это соединение mysql.
Благодарим за любую идею!
Пожалуйста, ознакомьтесь с приведенным ниже кодом, он даст вам представление о том, как реализовать соединение "Hive-Spring".
Использование клиента JDBC Hive
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:c = "http://www.springframework.org/schema/c"
xmlns:context = "http://www.springframework.org/schema/context"
xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- basic Hive driver bean -->
<bean id = "hive-driver" class = "org.apache.hadoop.hive.jdbc.HiveDriver"/>
<!-- wrapping a basic datasource around the driver -->
<!-- notice the 'c:' namespace (available in Spring 3.1+) for inlining constructor arguments,
in this case the url (default is 'jdbc:hive://localhost:10000/default') -->
<bean id = "hive-ds" class = "org.springframework.jdbc.datasource.SimpleDriverDataSource"
c:driver-ref = "hive-driver" c:url = "${hive.url}"/>
<!-- standard JdbcTemplate declaration -->
<bean id = "template" class = "org.springframework.jdbc.core.JdbcTemplate" c:data-source-ref = "hive-ds"/>
<context:property-placeholder location = "hive.properties"/>
</beans>
Запуск сценария или запроса Hive
<hdp:hive-runner id = "hiveRunner" run-at-startup = "true">
<hdp:script>
DROP TABLE IF EXITS testHiveBatchTable;
CREATE TABLE testHiveBatchTable (key int, value string);
</hdp:script>
<hdp:script location = "hive-scripts/script.q"/>
</hdp:hive-runner>
Более подробную информацию вы можете найти по этой ссылке.
Вы пытались использовать класс org.apache.hadoop.hive.jdbc.HiveDriver для подключения к Hive?
Спасибо за ваш ответ, хотя этот ответ на основе XML, к сожалению, не имеет для меня никакого значения, можете ли вы каким-либо образом дать мне представление о том, как это будет выглядеть в Java?