我要做的是非常基本的:使用 Python 连接到 Impala 数据库:
from impala.dbapi import connect
conn = connect(host='impala', port=21050, auth_mechanism='PLAIN')
我正在使用 Impyla 包来做到这一点。我收到了这个错误:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/thriftpy/transport/socket.py", line 96, in open
self.sock.connect(addr)
socket.gaierror: [Errno -3] Temporary failure in name resolution
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/alaaeddine/PycharmProjects/test/data_test.py", line 3, in <module>
conn = connect(host='impala', port=21050, auth_mechanism='PLAIN')
File "/usr/local/lib/python3.6/dist-packages/impala/dbapi.py", line 147, in connect
auth_mechanism=auth_mechanism)
File "/usr/local/lib/python3.6/dist-packages/impala/hiveserver2.py", line 758, in connect
transport.open()
File "/usr/local/lib/python3.6/dist-packages/thrift_sasl/__init__.py", line 61, in open
self._trans.open()
File "/usr/local/lib/python3.6/dist-packages/thriftpy/transport/socket.py", line 104, in open
message="Could not connect to %s" % str(addr))
thriftpy.transport.TTransportException: TTransportException(type=1, message="Could not connect to ('impala', 21050)")
还尝试了 Ibis 包,但由于相同的 thriftpy 相关错误而失败。
在使用 Dbeaver 的 Windows 中,我可以使用官方 Cloudera JDBC 连接器连接到数据库。我的问题是:
- 应该在我的连接代码中将我的 JDBC 连接器作为参数传递吗?我进行了一些搜索,但找不到指向这个方向的东西。
- 我应该尝试 Ibis 和 Impyla 套餐以外的其他方式吗?在使用它们时,我遇到了很多与版本相关的问题和依赖关系。如果是,您会推荐什么替代方案?
谢谢!