今天在使用implala 连接 hive 数据库的时候,出现了一个错误。

implala 各种依赖安装好之后,测试连接时,报了以下错误:

1
TypeError: can't concat str to bytes

定位到问题,位于thrift_sasl这个包的init.py第93行:

1
2
header = struct.pack(">BI", status, len(body))
self._trans.write(header + body)

这里的body可能是str类型,所以抛出了这个异常。然后我去github上搜索了一下源码。发现作者竟然已经放弃维护了。于是只好自己动手,很简单,在94行加入以下代码:

1
2
3
4
header = struct.pack(">BI", status, len(body))
if(type(body) is str):
    body = body.encode() 
self._trans.write(header + body)

有需求的话,可以自己下载源码编译。点这里