0

私は完全に機能する 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 ドライバーによってサポートされる OS の 1 つとしてリストされています。

4

3 に答える 3

1

サーバーのhive.server2.authenticationがNONEに設定されている場合、サーバーのhive.server2.enable.doAsがtrueに設定されているため、ユーザー名認証メカニズムを使用して有効なユーザー名を指定する必要があります。Linuxの場合、正しい認証方法を使用するには、AuthMech=1で DSN を構成する必要があります。次に、isql を実行するときに有効なユーザー名を渡す必要があります (例: isql DSN UID )。これが役立つことを願っています。

于 2015-04-03T18:27:01.393 に答える
0

それでも問題が解決しない場合は、DSN を見せていただけませんか? Spark 1.1.x 以降では、DSN に SparkServerType=3 も含まれていることを確認してください。ありがとう。

于 2015-04-03T18:43:54.293 に答える
0

これを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 とodbc.iniの DSN を使用して接続します。

isql -v SPARK

それが役に立てば幸い !

于 2015-04-15T14:01:05.440 に答える