我目前无法尝试设置Python代码,以便能够对远程Impala服务器执行impala查询。
在我的本地Windows上,我使用的是已设置的ODBC驱动程序,可以成功用于在Tableau中使用Impala检索数据。 我们使用的Hadoop环境是Kerberised。 要使用ODBC管理员进行成功的连接测试,我们需要SASL和受信任的.pem证书。
我已经尝试使用多个库进行连接,但我不确定如何设置连接属性以及我需要它。
我尝试按照this guide开始使用。
我通过设置{
来试验pyodbc
驱动程序,主机,端口,数据库,AuthMech = 3,UseSASL = 1,UID,PWD,SSL = 1
在我的连接字符串中,但我总是最终得到:
pyodbc.Error:('HY000','[HY000] [Cloudera] [ImpalaODBC](100)错误 来自Impala Thrift API:无需读取更多数据。 (100) (的SQLDriverConnect); [HY000] [Cloudera] [ImpalaODBC](100)错误来自 Impala Thrift API:无需读取更多数据。 (100)')
我不确定如何设置证书,因此可能会导致此错误。
我也看了impyla
,但我不确定如何在那里设置连接参数。
有人可以了解如何从本地Windows用户运行查询到kerberised Impala服务器吗?需要设置哪些参数以及他们期望的值?代码示例表示赞赏。我不关心使用哪个库,虽然我似乎无法安装thrift-sasl
。请询问任何所需的其他信息,我将更新我的问题。
答案 0 :(得分:2)
显然,我可以从我之前配置的ODBC驱动程序/连接中受益。 通过提供我在ODBC Administrator工具中找到的DSN,我可以解决我的问题。我最终使用了pyodbc。
import pyodbc
cfg = {'username':'...', ...}
connString = '''DSN={3};UID={0};PWD={1};Database={2}'''.format(cfg['username'],cfg['password'],cfg['database'],cfg['dsn'])
pyodbc.autocommit = True
conn = pyodbc.connect(connString, autocommit = True)
cursor = conn.cursor()