Spring Batch: неподдерживаемый тип базы данных для Hive - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь создать источник данных для моего шага, который использует драйвер Cloudera Hive Server 2 для подключения к таблице в Hadoop. Хотя у меня был успех с этим драйвером в других случаях использования, попытка использовать его в Spring Batch выдает эту ошибку:

Причина: java.lang.IllegalArgumentException: DatabaseType not found для названия продукта: [Apache Hive]

Я создал источник данных в application.yml

spring:
  datasource:
      url: <URL>
      username:
      password:
      driver-class-name: com.cloudera.hive.jdbc4.HS2Driver

Я заметил, что этот тип базы данных не поддерживается в списке, найденном в DatabaseType.java. Что расстраивает, так это то, что я не могу использовать драйвер Apache Hive для своего соединения из-за других проблем, поэтому мне нужно найти способ сказать Spring, что это допустимый пул соединений, или даже подделать его, чтобы он думал, что это соединение mysql.

Любые идеи будут с благодарностью!

1 Ответ

0 голосов
/ 04 мая 2018

Пожалуйста, ознакомьтесь с приведенным ниже кодом, это даст вам представление о том, как реализовать соединение "Hive-Spring".

Использование клиента Hive JDBC

<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>

Для получения более подробной информации вы можете обратиться по этой ссылке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...