Драйвер Simba Spark ODBC не удается подключиться, время ожидания всегда

У меня есть полностью работающий Apache Spark Hive ThriftServer 1.2.1, который протестирован с beeline и SQL Developer (оба работают). Конфигурация для этого сервера следующая:

  <property>
     <name>hive.server2.authentication</name>
     <value>NONE</value>
  </property>

  <property>
     <name>hive.metastore.schema.verification</name>
     <value>false</value>
  </property>

 <property>
    <name>hive.server2.enable.doAs</name>
    <value>true</value>
 </property>

Но Simba ODBC не может установить соединение с ним (хотя сервер отвечает сообщением об ошибке). Каждый раз, когда клиентская сторона выдает следующее исключение через 2 минуты:

    [S1000][unixODBC][Simba][SparkODBC] (22) Error from ThriftHiveClient: EAGAIN (timed out)
    [ISQL]ERROR: Could not SQLConnect

И серверная сторона выдает следующее исключение:

java.lang.RuntimeException: org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)
    at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:189)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:182)
    at org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125)
    at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:253)
    at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)
    ... 4 more

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

PS: Операционная система на стороне клиента - SUSE, которая указана в качестве одной из поддерживаемых ОС драйвером Spark ODBC.

3 ответа

Если для вашего сервера hive.server2.authentication установлено значение NONE, вам нужно будет использовать механизм аутентификации имени пользователя и указать действительное имя пользователя, поскольку для вашего сервера hive.server2.enable.doAs установлено в значение true. Для Linux это означает, что вам нужно настроить DSN с AuthMech=1, чтобы использовать правильный метод аутентификации. Затем вам нужно будет ввести действительное имя пользователя при запуске isql (например, isql DSN UID). Надеюсь, это поможет.

Если у вас все еще есть проблемы, можно ли показать нам свой DSN? Для Spark 1.1.x и более поздних версий убедитесь, что в вашем DSN также есть SparkServerType=3. Благодарю.

У меня это работает, добавив это в hive-site.xml:

  <property>
    <name>hive.server2.authentication</name>
    <value>NONE</value>
  </property>

Затем на сервере с unixODBC и установленным драйвером simbaODBC я изменил файл odbc.ini на этот (обратите внимание, что пользователь находится в hive-site.xml):

[SPARK]
Description=Spark ODBC Driver (64-bit) DSN
Driver=/opt/simba/sparkodbc/lib/64/libsimbasparkodbc64.so
Host=192.168.100.10
Port=10000
SparkServerType=3
AuthMech=2
UID=hive

Затем я подключаюсь с помощью isql и DSN в odbc.ini.

isql -v SPARK

Надеюсь, поможет!

Другие вопросы по тегам