python - 无法使用 Python 连接到 Hive2

标签 python python-3.x hadoop hive cloudera

使用以下代码使用 Python 连接到 Hive2 时:

import pyhs2

with pyhs2.connect(host='localhost',
           port=10000,
           authMechanism="PLAIN",
           user='root',
           password='test',
           database='default') as conn:
with conn.cursor() as cur:
    #Show databases
    print cur.getDatabases()

    #Execute query
    cur.execute("select * from table")

    #Return column info from query
    print cur.getSchema()

    #Fetch table results
    for i in cur.fetch():
        print i

我遇到以下错误:

File
"C:\Users\vinbhask\AppData\Roaming\Python\Python36\site-packages\pyhs2-0.6.0-py3.6.egg\pyhs2\connections.py",
line 7, in <module>
    from cloudera.thrift_sasl import TSaslClientTransport ModuleNotFoundError: No module named 'cloudera'

试过herehere但问题没有解决。

这是到目前为止安装的软件包:

bitarray0.8.1,certifi2017.7.27.1,chardet3.0.4,cm-api16.0.0,cx-Oracle6.0.1,future0.16.0,idna2.6,impyla0.14.0,JayDeBeApi1.1.1,JPype10.6.2,ply3.10,pure-sasl0.4.0,PyHive0.4.0,pyhs20.6.0,pyodbc4.0.17,requests2.18.4,sasl0.2.1,six1.10.0,teradata15.10.0.21,thrift0.10.0,thrift-sasl0.2.1,thriftpy0.3.9,urllib31.22

使用 Impyla 时出错:

Traceback (most recent call last):
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\Scripts\HiveConnTester4.py", line 1, in <module>
from impala.dbapi import connect
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\impala\dbapi.py", line 28, in <module>
import impala.hiveserver2 as hs2
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\impala\hiveserver2.py", line 33, in <module>
from impala._thrift_api import (
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\impala\_thrift_api.py", line 74, in <module>
include_dirs=[thrift_dir])
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\thriftpy\parser\__init__.py", line 30, in load
include_dir=include_dir)
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\thriftpy\parser\parser.py", line 496, in parse
url_scheme))
thriftpy.parser.exc.ThriftParserError: ThriftPy does not support generating module with path in protocol 'c'

最佳答案

thrift_sasl.py 正在尝试在 Python 3.0 中不再可用的 cStringIO。试试 python 2?

关于python - 无法使用 Python 连接到 Hive2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45904485/

相关文章:

python - 如何从完全不同的 ADB 工作区访问一个 ADB 工作区的 dbfs 存储中的文件/表

python - 与 R 相比,将 mysql 表加载到 python 中需要很长时间

python - 将 Pandas 数据框转换为 PySpark 数据框会降低索引

python - 连接 wxpython 和 bash 脚本

Python 列出输入 - 整数和字符串

python - 用 python 开始循环

java - 作业提交失败,出现异常 'java.io.FileNotFoundException(Apache Hive 1.2.1)

java - 如何将Java程序重写为Hadoop作业?

python-3.x - 如何使用具有管理员权限的子进程停止和启动 Windows 服务?

Hadoop MapReduce 作业输入文件 ClassNotFound