Python соединение с базой данных Hive в HDInsight - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь создать соединение с Hive, размещенным в кластере HDInsight, с помощью моего python скрипта и получаю ошибку ниже:

    Traceback (most recent call last):
  File "ClassLoader.java", line 357, in java.lang.ClassLoader.loadClass
  File "Launcher.java", line 349, in sun.misc.Launcher$AppClassLoader.loadClass
  File "ClassLoader.java", line 424, in java.lang.ClassLoader.loadClass
  File "URLClassLoader.java", line 382, in java.net.URLClassLoader.findClass
java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: org.apache.thrift.transport.TTransportException
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "org.jpype.JPypeContext.java", line 330, in org.jpype.JPypeContext.callMethod
  File "Method.java", line 498, in java.lang.reflect.Method.invoke
  File "DelegatingMethodAccessorImpl.java", line 43, in sun.reflect.DelegatingMethodAccessorImpl.invoke
  File "NativeMethodAccessorImpl.java", line 62, in sun.reflect.NativeMethodAccessorImpl.invoke
  File "NativeMethodAccessorImpl.java", line -2, in sun.reflect.NativeMethodAccessorImpl.invoke0
  File "DriverManager.java", line 247, in java.sql.DriverManager.getConnection
  File "DriverManager.java", line 664, in java.sql.DriverManager.getConnection
  File "HiveDriver.java", line 105, in org.apache.hive.jdbc.HiveDriver.connect
Exception: Java Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "s.py", line 5, in <module>
    "/root/jdbc/hive-jdbc-1.2.1000.2.6.5.3009-43.jar")
  File "/usr/local/lib64/python3.6/site-packages/jaydebeapi/__init__.py", line 412, in connect
    jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs)
  File "/usr/local/lib64/python3.6/site-packages/jaydebeapi/__init__.py", line 230, in _jdbc_connect_jpype
    return jpype.java.sql.DriverManager.getConnection(url, *dargs)
java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/apache/thrift/transport/TTransportException

Мой скрипт -

import jaydebeapi
conn = jaydebeapi.connect("org.apache.hive.jdbc.HiveDriver",
       "jdbc:hive2://10.20.30.40:10001/default;transportMode=http;ssl=false;httpPath=/hive2",
       ["username", "password"],
       "/root/jdbc/hive-jdbc-1.2.1000.2.6.5.3009-43.jar")

У меня есть экспортированный CLASSPATH будет содержать все файлы jar.

1 Ответ

0 голосов
/ 13 августа 2020

Ошибка: java.lang.ClassNotFoundException: java.lang.ClassNotFoundException, что означает, что выполнение не может найти банку / root / jdbc / hive-jdb c -1.2.1000.2.6.5.3009-43.jar . Я считаю, что он размещен только на хосте, с которого вы выполняете код. Я бы предложил разместить файл jar в одной структуре каталогов на всех узлах кластера и проверить разрешения, чтобы пользователь, выполняющий задание, имел доступ к этому пути.

...