PythonリンクHiveデータの読み出し方法

2739 ワード

RとPythonはデータ分析者がよく使う2つのツールで、ペン主はRでRJDBCリンクHiveを通じてRがHiveをどのようにリンクするかを紹介し、今日Pythonを交換します.
以下にはいくつかのリンク方式があり、タイトルには公式リンクが含まれています.詳細はクリックしてご覧ください.
注意:
  • PythonリンクHiveはPythonバージョンとパッケージバージョンと大きく関係しています.Anacondaで管理することをお勧めします.Macの下でAnacondaのインストールと
  • の使用を歓迎します.
  • thrift, sasl, thrift_sasl, thriftpyこれらのパッケージはすべて使用されます.事前にインストールしてください.インストール対応バージョンをお勧めします.
  • thrift - 0.11.0
  • sasl - 0.2.1
  • thrift_sasl - 0.3.0
  • thriftpy - 0.3.9


  • ペン環境
  • バージョン
  • #   
    macOS Mojave Version 10.14.2
    # Python
    Python 3.7.1
    

    依存パッケージの準備
    PyHive
    パッケージのインストール
    pip install pyhive
    

    リンク方式
    from pyhive import hive
    conn = hive.Connection(host = '', port = 10000, username = '****', database = 'default')
    #host  ip,port:   ,username:   ,database:        
    cursor = conn.cursor()
    cursor.execute('SHOW DATABASES')
    #     
    for result in cursor.fetchall():
         print(result) 
    

    impyla
    パッケージのインストール
    pip install impyla
    

    エラー処理impyla pipが正常にインストールされましたが、実際にインポートを実行したときにエラーが発生しました.
    In [4]: from impala.dbapi import connect
    Traceback (most recent call last):
    
      File "/anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3267, in run_code
        exec(code_obj, self.user_global_ns, self.user_ns)
    
      File "", line 1, in 
        from impala.dbapi import connect
    
      File "/anaconda3/lib/python3.7/site-packages/impala/dbapi.py", line 28, in 
        import impala.hiveserver2 as hs2
    
      File "/anaconda3/lib/python3.7/site-packages/impala/hiveserver2.py", line 340
        async=True)
            ^
    SyntaxError: invalid syntax
    

    しょりモード
    conda install -c anaconda impyla
    

    以上の処理の後に問題があれば
    /anaconda3/lib/python3.7/site-packages/thriftpy/protocol/binary.py in read_message_begin(inbuf, strict)
        176         if strict:
        177             raise TProtocolException(type=TProtocolException.BAD_VERSION,
    --> 178                                      message='No protocol version header')
        179
        180         name = inbuf.read(sz).decode('utf-8')
    
    TProtocolException: TProtocolException(type=4)
    

    関連する依存パッケージを再インストールすることをお勧めします.バージョンは必ず正しいです.
    リンク方式
    conn = connect(host = '172.18.33.23', port = 10000, auth_mechanism = 'PLAIN')
    cursor = conn.cursor()
    cursor.execute('SHOW DATABASES')
    #     
    for result in cursor.fetchall():
         print(result)