Использование jdbc для подключения к улью в докере cloudera

У меня в локальной сети установлен док-контейнер cloudera, также настроен порт улья, вот так docker run --hostname=quickstart.cloudera --privileged=true -t -i -p 8888:8888 -p 80:80 -p 10000:10000 --name cloudera2 cloudera/quickstart /usr/bin/docker-quickstart

Я хочу связать его с JDBC, мой код такой,

val driver = "org.apache.hive.jdbc.HiveDriver"
val url = "jdbc:hive2://localhost:10000/default"
val username = ""
val password = ""

// there's probably a better way to do this
var connection: Connection = null

try {
  // make the connection
  Class.forName(driver)

} catch {
  case e => e.printStackTrace
}
connection = DriverManager.getConnection(url, username, password)
connection.close()

но возникает NoClassDefFoundError, когда я пытаюсь его выполнить

log4j:WARN No appenders could be found for logger (org.apache.hive.jdbc.Utils).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
    at org.apache.hive.jdbc.HiveConnection.createUnderlyingTransport(HiveConnection.java:362)
    at org.apache.hive.jdbc.HiveConnection.createBinaryTransport(HiveConnection.java:382)
    at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:193)
    at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:167)
    at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at ScalaJdbcConnectSelect$.main(ScalaJdbcConnectSelect.scala:32)

ульевая версия:

Hive 1.1.0-cdh5.7.0

maven зависимость

    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-jdbc</artifactId>
        <version>1.1.0-cdh5.7.0</version>
    </dependency>

Я не уверен, что это из-за имени пользователя и пароля, но я пробовал "cloudera","cloudera" "hive","", and "",""


person Rong Han    schedule 24.04.2017    source источник


Ответы (1)


Я обнаружил, что необходимо добавить общую зависимость от hadoop, в моем случае это выглядит следующим образом.

    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.6.0-cdh5.7.0</version>
    </dependency>

И это работает нормально.

person Rong Han    schedule 25.04.2017