【问题标题】:Java class HiveDriver not found when conecting to database Hive with Anaconda and Python 3.8 64bits使用 Anaconda 和 Python 3.8 64 位连接到数据库 Hive 时找不到 Java 类 HiveDriver
【发布时间】:2021-06-17 13:58:51
【问题描述】:

在过去的几天里,我遇到了一个我无法解释的问题。 我在 Windows 10、Anaconda 64 位、Jupyter 64 位、Python 64 位等... 我是初学者,我需要帮助。非常感谢您的帮助,非常感谢。 我在 anaconda jupyter notebook 下开发,我有一个使用 jdbc 连接到 Hive 数据库的 python 脚本。 我添加了一个 jar 文件,其中包含一个 java 类 org.apache.hive.jdbc.HiveDriver。 当我运行脚本时出现以下错误:

TypeError:找不到类 org.apache.hive.jdbc.HiveDriver

这是我的python代码

import jaydebeapi

driver = "org.apache.hive.jdbc.HiveDriver"
url = "jdbc:hive2://ip-172-31-3-208.eu-west-1.compute.internal:11000/default;principal=indexima/ip-172-31-3-208.eu-west-1.compute.internal@INDEXIMA.COM;"
hivejar = "C:/user/xxx/Documents/Python/hive-jdbc-3.1.2.jar"


#create connection and cursor
connection = jaydebeapi.connect(driver, [ url, '', ''], hivejar)
cursor = connection.cursor()

输出是:

    TypeError                                 Traceback (most recent call last)
    <ipython-input-15-3a47c2c3c553> in <module>
         11 
         12 # create connection and cursor
    ---> 13 connection = jaydebeapi.connect(driver, [ url, '', ''], hivejar)
         14 cursor = connection.cursor()
         15 

    C:\ProgramData\Anaconda3\lib\site-packages\jaydebeapi\__init__.py in connect(jclassname, url, driver_args, jars, libs)
        410     else:
        411         libs = []
    --> 412     jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs)
        413     return Connection(jconn, _converters)
        414 

    C:\ProgramData\Anaconda3\lib\site-packages\jaydebeapi\__init__.py in _jdbc_connect_jpype(jclassname, url, driver_args, jars, libs)
        219             return jpype.JArray(jpype.JByte, 1)(data)
        220     # register driver for DriverManager
    --> 221     jpype.JClass(jclassname)
        222     if isinstance(driver_args, dict):
        223         Properties = jpype.java.util.Properties

    C:\ProgramData\Anaconda3\lib\site-packages\jpype\_jclass.py in __new__(cls, jc, loader, initialize)
         97 
         98         # Pass to class factory to create the type
    ---> 99         return _jpype._getClass(jc)
        100 
        101 

    **TypeError: Class org.apache.hive.jdbc.HiveDriver is not found**

jar 文件当然包含 java 类 HiveDriver。 我更改了罐子的名称并替换为任何名称,并且得到了相同的诊断。 就好像 Jupyter 将寻找其他地方一样。 感谢您的帮助。

【问题讨论】:

    标签: python jdbc hive anaconda jupyter


    【解决方案1】:

    您在此处使用的参数有一个小错误配置:

    connection = jaydebeapi.connect(driver, [ url, '', ''], hivejar)
    

    不应将 URL 放置在 [ ] 数组中 - 只能放置用户 ID 和密码字符串。

    改用这个:

    connection = jaydebeapi.connect(driver, url, ['', ''], hivejar)
    

    更多示例是官方文档中的here

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 1970-01-01
      • 2020-04-07
      • 2013-10-20
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多