Пакет Spring: неподдерживаемый тип базы данных для Hive

Я пытаюсь создать 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.

Благодарим за любую идею!

0
0
633
1

Ответы 1

Пожалуйста, ознакомьтесь с приведенным ниже кодом, он даст вам представление о том, как реализовать соединение "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>

Более подробную информацию вы можете найти по этой ссылке.

Спасибо за ваш ответ, хотя этот ответ на основе XML, к сожалению, не имеет для меня никакого значения, можете ли вы каким-либо образом дать мне представление о том, как это будет выглядеть в Java?

rnmalone 08.05.2018 12:58

Вы пытались использовать класс org.apache.hadoop.hive.jdbc.HiveDriver для подключения к Hive?

user8406805 08.05.2018 13:00

Другие вопросы по теме