0

I'm new in python, so be kind. I'm trying to grab a data from hive with JDBC. I did all the installations required for it. But while running this simple code, an error return. I need some help here to understand what is wrong, and how shell I fix that.

import jaydebeapi as jdba
def get_hive_jdbc_con():
    driver="org.apache.hive.jdbc.HiveDriver"
    conn_url="jdbc:hive2://tlgdhadlap12.r-office.com:10000/default"
    auth_lst=["un","pw"]
    conn = jdba.connect(driver,conn_url,auth_lst,"c:/app/hive-jdbc-1.2.1000.2.6.4.0-91-standalone.jar")
    return conn

get_hive_jdbc_con()

error is return:

Traceback (most recent call last):

  File "C:/../PycharmProjects/untitled/venv/Scripts/GilaTest", line 10, in <module>

    get_hive_jdbc_con()

  File "C:/../PycharmProjects/untitled/venv/Scripts/GilaTest", line 7, in get_hive_jdbc_con

    conn = jdba.connect(driver,conn_url,auth_lst,"c:/app/hive-jdbc-1.2.1000.2.6.4.0-91-standalone.jar")

  File "C:\..\PycharmProjects\untitled\venv\lib\site-packages\jaydebeapi\__init__.py", line 68, in connect

    connection = gateway.jvm.DriverManager.getConnection(*driver_args)

  File "C:\..\PycharmProjects\untitled\venv\lib\site-packages\py4j\java_gateway.py", line 1160, in __call__

    answer, self.gateway_client, self.target_id, self.name)

  File "C:\..\PycharmProjects\untitled\venv\lib\site-packages\py4j\protocol.py", line 324, in get_return_value

    format(target_id, ".", name, value))

py4j.protocol.Py4JError: An error occurred while calling z:java.sql.DriverManager.getConnection. Trace:

py4j.Py4JException: Method getConnection([class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String]) does not exist

                at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)

                at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:339)

                at py4j.Gateway.invoke(Gateway.java:276)

                at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)

                at py4j.commands.CallCommand.execute(CallCommand.java:79)

                at py4j.GatewayConnection.run(GatewayConnection.java:214)

                at java.lang.Thread.run(Unknown Source)

Thanks for any help! Gila

  • Hello, as you are new to python I would suggest you read [this article](https://swcarpentry.github.io/python-novice-inflammation/07-errors/index.html) on how to read python tracebacks (errors) – Marcello B. Oct 16 '18 at 04:42
  • 1
    Actually, it seems like understanding Java stacktraces might help a bit more in this case :) Looks like the way you call jaydebeapi's `connect()` function, the arguments end up being passed as 56 string objects to the `DriverManager`'s `getConnection` method. Try it like this: `conn = jdba.connect(jclassname=driver, driver_args=[conn_url, *auth_lst], jars="c:/app/hive-jdbc-1.2.1000.2.6.4.0-91-standalone.jar")` – shmee Oct 16 '18 at 05:53
  • Using a **Java** connector with Python is asking for trouble... Did you consider a native Python connector, such as `Impyla`? _(I know there are others but that one is maintained by Cloudera and handles Kerberos authentication pretty well, which is a plus in my case)_ – Samson Scharfrichter Oct 16 '18 at 06:37

0 Answers0