Py4JJavaError java. sql .SQLException: метод не поддерживается. "Ошибка при попытке получить таблицы кустов через pyspark с использованием строки подключения - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь извлечь таблицы улья с сервера, используя информацию о соединении через pyspark.

Вот код:

from pyspark.sql.session import SparkSession
from pyspark import SparkContext 
from pyspark.sql import SQLContext 

database = "some_db_name"
table = "some_table_name"
user = "user"
password  = "pwd"

#read table data into a spark dataframe
jdbcDF = spark.read.format("jdbc") \
    .option("url", f"jdbc:hive2://dbslp_server:10159/{database};") \
    .option("dbtable", table) \
    .option("user", user) \
    .option("password", password) \
    .option("driver", "org.apache.hive.jdbc.HiveDriver") \
    .load()


Я в основном пытаюсь подключиться к серверу в котором есть таблицы кустов, при этом аутентифицируя мои учетные данные на этом сервере с помощью драйвера куста. Однако я получаю следующую ошибку:


Py4JJavaError Traceback (последний вызов был последним) в 10 .option («пользователь», пользователь) \ 11 .option («пароль», пароль) \ ---> 12 .option ("драйвер", "org. apache .hive.jdb c .HiveDriver") \ 13 .load ()

/ anaconda3 / lib / python3. 6 / site-packages / pyspark / sql / readwriter.py при загрузке (self, path, format, schema, ** options) 170 возвращает self._df (self._jreader.load (self._spark._s c ._ jvm) .PythonUtils.toSeq (path))) 171 else: -> 172 return self._df (self._jreader.load ()) 173 174 @since (1.4)

/ anaconda3 / lib / python3 .6 / site-packages / py4j / java_gateway.py в call (self, * args) 1255 answer = self.gateway_client.send_command (команда) 1256 return_value = get_return_value (-> ответ 1257, self.gateway_client , self.target_id, self.name) 1258 1259 для temp_arg в temp_args:

/ anaconda3 / lib / python3 .6 / site-packages / pyspark / sql / utils.py в deco (* a, ** kw) 61 def deco (* a, ** kw): 62 try: ---> 63 return f (* a, ** kw) 64 кроме p y4j.protocol.Py4JJavaError as e: 65 s = e.java_exception.toString ()

/ anaconda3 / lib / python3 .6 / site-packages / py4j / protocol.py в get_return_value (ответ, gateway_client) , target_id, name) 326 повысить Py4JJavaError (327 "Произошла ошибка при вызове {0} {1} {2}. \ n". -> 328 формат (target_id, ".", Name), значение) 329 else: 330 повысить Py4JError (

Py4JJavaError: Произошла ошибка при вызове o623.load.: java. sql. SQLException: метод не поддерживается в org. apache .hive.jdb c .HiveStatement.setQueryTimeout (HiveStatement. java: 739) в org. apache .spark. sql .execution.datasources.jdb c .JDBCRDD $ .resolveTable (JDBCRDD. scala: 60) в орг. apache .spark. sql .execution.datasources.jdb c .JDBCRelation $ .getSchema (JDBCRelation. scala: 210 ) в орг. apache .spark. sql .execution.datasources.jdb c .JdbcRelationProvider.createRelation (JdbcRelationProvider. scala: 35) в орг. apache .spark. sql .execution. datasources.DataSource.resolveRelation (DataSource. scala: 318) в организации. apache .spark. sql .DataFrameReader.loadV1Source (DataFrameReader. scala: 223) в организации. apache .spark. sql .DataFrameReader.load (DataFrameReader. scala: 211) в орг. apache .spark. sql .DataFrameReader.load (DataFrameReader. scala: 167) в sun.reflect.GeneratedMethodAccessor12.invoke ( Неизвестный источник. MethodInvoker. java: 244) в py4j.reflection.ReflectionEngine.invoke (ReflectionEngine. java: 357) в py4j.Gateway.invoke (Gateway. java: 282) в py4j.commands.AbstractCommand.invokeMethod (AbstractCom . java: 132) на py4j.commands.CallCommand.execute (CallCommand. java: 79) на py4j.GatewayConnection.run (GatewayConnection. java: 238) на java .lang.Thread.run ( Тема. java: 748)

Я понимаю, что это ошибка, связанная с драйвером, я пытался изменить другие драйверы, связанные с кустами, но все безрезультатно, поскольку та же самая ошибка все еще сохраняется. У меня есть скачать любой драйвер. явно или связать это каким-либо другим способом?

Кто-нибудь может пролить свет на эту проблему и сообщить мне, как я могу решить эту проблему? Или есть какой-то другой способ, которым я могу достичь этого?

1 Ответ

0 голосов
/ 30 апреля 2020
  1. Загрузить Jive JDB jive https://repo1.maven.org/maven2/org/apache/hive/hive-jdbc/3.1.2/hive-jdbc-3.1.2.jar
  2. Добавить jar в каталог / jar Spark.
  3. Перезагрузить сервер
  4. Запустите работу PySpark
...