如何解决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 举报,一经查实,本站将立刻删除。