Impyla 以字节格式返回值

问题描述

我正在尝试从 Impyla 接收 JH 中的数据,一切正常,除了一个数据库中的表以 b'' 格式返回数据。

代码

from impala.dbapi import connect

conn = connect(host=host,port=21050,user={userName},use_ssl=True,auth_mechanism='GSSAPI',kerberos_service_name='impala',database=db)
cursor = conn.cursor()
cursor.execute(sql)
data = cursor.fetchall()

示例输出

b'',b'UK',b'X',b'Hlavn\xc3\xad 51',

它只发生在 1 个 DB 上,我测试过的其他 DB 和表在 utf-8 中都可以(在 4 个 DB 上测试)。 + 并非每一列都在 b'' 中。

包:

impyla 0.17.0 pypi_0 pypi
bitarray 2.1.0 pypi_0 pypi
six 1.14.0 py_1 conda-forge
thrift 0.11.0 pypi_0 pypi
thrift-cpp 0.13.0 h62aa4f2_2 conda-forge
thrift-sasl 0.4.3 pypi_0 pypi
thriftpy 0.3.9 py37h516909a_1001 conda-forge
thriftpy2 0.4.14 py37h5e8e339_0 conda-forge
krb5 1.17.2 h926e7f8_0 conda-forge

但是,如果我不是从 JH 而是直接从服务器运行相同的查询,则输出的编码正确 - 没有字节。

服务器上的包:

impyla 0.16.3 py37hc8dfbb8_0 conda-forge
bitarray 2.0.1 py37h5e8e339_0 conda-forge
thrift 0.13.0 py37hcd2ae1e_2 conda-forge
thrift_sasl 0.4.2 py37h8f50634_0 conda-forge
thriftpy 0.3.9 py37h516909a_1001 conda-forge
thriftpy2 0.4.14 py37h5e8e339_0 conda-forge
six 1.15.0 pyh9f0ad1d_0 conda-forge
krb5 1.19.1 hcc1bbae_0 conda-forge

有什么线索吗? :) 谢谢。


编辑:07. 06. 格式以字节为单位,因为列是 varchar。字符串列格式 = utf-8 编码的字符串。但是 varchars 和 chars 是字节格式。似乎他们通过版本升级改变了它,正如我描述的行为服务器/JH(不同版本)。所以我会通过降级版本来解决这个问题,但是在尝试选择大量行时,较低版本返回“无效查询句柄”:(

我正在添加链接,其中描述了问题、解决方法和未来的进展:https://github.com/cloudera/impyla/issues/455

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)