0

インストールしましたが、

pip install thrift
pip install PyHive
pip install thrift-sasl

pip install sasl失敗したので、sasl‑0.2.1‑cp27‑cp27m‑win_amd64.whlファイルをダウンロードして Windows 8.1 PC にインストールしました。

それから私はこのコードを書きました、

from pyhive import hive
cursor = hive.connect('192.168.1.232', port=10000, auth='NONE')
cursor.execute('SELECT * from sample_07 LIMIT 5',async=True)
print cursor.fetchall()

これによりエラーが発生します:

Traceback (most recent call last):
  File "C:/DigInEngine/scripts/UserManagementService/fd.py", line 37, in <module>
    cursor = hive.connect('192.168.1.232', port=10000, auth = 'NONE')
  File "C:\Python27\lib\site-packages\pyhive\hive.py", line 63, in connect
    return Connection(*args, **kwargs)
  File "C:\Python27\lib\site-packages\pyhive\hive.py", line 104, in __init__
    self._transport.open()
  File "C:\Python27\lib\site-packages\thrift_sasl\__init__.py", line 72, in open
    message=("Could not start SASL: %s" % self.sasl.getError()))
thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2

このコードは、

from sqlalchemy import create_engine
engine = create_engine('hive://192.168.1.232:10000/default')
try:
    connection = engine.connect()
except Exception, err:
    print err
result = connection.execute('select * from sample_07;')
engine.dispose()

このエラー、

SASL を開始できませんでした: sasl_client_start のエラー (-4) SASL(-4): 利用可能なメカニズムがありません: コールバックが見つかりません: 2

ここから Hortonworks サンドボックスをダウンロードし、別のサーバーで使用しています。

注:私もこれを経験しましたが、受け入れられた答えは私にとってはうまくいきません.ハイブからThriftHiveをインポートすると、ハイブがインストールされているにもかかわらずインポートエラーが発生するためです. そこで、pyhive または sqlalchemy を使用することにしました

ハイブに接続してクエリを簡単に実行するにはどうすればよいですか?

4

2 に答える 2

1

Windows で SASL をビルドする手順は次のとおりですが、マイレージはさまざまです。これの多くは、特定のシステムのパスと利用可能なライブラリに依存します。

また、これらの手順は Python 2.7 に固有のものであることに注意してください (質問のパスから使用していることがわかります)。

大まかな概要は、このプロジェクトをインストールしていることです: https://github.com/cyrusimap/cyrus-sasl。これを行うには、Python 2.7 のビルドに使用された従来の C++ コンパイラを使用する必要があります。これを機能させるには、他にもいくつかの手順があります。

ビルド前の手順:

  1. Microsoft Visual C++ Compiler for Python 2.7をインストールします。デフォルトのインストール パスを使用します。次の 2 つの手順のために、インストール先をメモしておいてください (以下のリストに 2 つのオプションが含まれています)。
  2. インストールに適したインクルードの場所にこのファイルをコピーします。
  3. 同じインクルード ディレクトリで、この回答から unistd.h ファイルを作成します。

ビルド手順:

  1. git clone https://github.com/cyrusimap/cyrus-sasl
  2. 手順 1 でコンパイラと共にインストールされた「VS2013 x64 Native Tools コマンド プロンプト」を開きます。
  3. ディレクトリを手順 4 で作成したディレクトリに変更し、次にlibサブディレクトリに変更します。
  4. nmake /f ntmakefile STATIC=no prefix=C:\sasl64
  5. nmake /f ntmakefile prefix=C:\sasl64 STATIC=no install 以下の注を参照してください
  6. copy /B C:\sasl64\lib\libsasl.lib /B C:\sasl64\lib\sasl2.lib
  7. pip install thrift_sasl --global-option=build_ext \ --global-option=-IC:\\sasl64\\include \ --global-option=-LC:\\sasl64\\lib

「含める」場所:

  • "C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\VC\include\stdint.h"
  • "%USERPROFILE%\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\include"

以下は、これらの同じ手順への参照であり、いくつかの追加の注釈と説明があります: http://java2developer.blogspot.co.uk/2016/08/making-impala-connection-from-python-on.html

include: 参照されている手順では、およびwin32\includeサブディレクトリで 手順 (8) も実行されています。これも実行する必要がある場合があります。

于 2017-02-14T18:29:11.320 に答える