用远程执行的Python代码使用ODBC运行impala查询

问题描述:

我目前停留在尝试设置将能够对远程Impala服务器执行impala查询的Python代码。用远程执行的Python代码使用ODBC运行impala查询

在我的本地Windows我使用已经建立并可以成功地应用在的Tableau检索与帕拉数据的ODBC驱动程序。 我们使用的Hadoop环境是Kerberised。 要使用ODBC管理员进行成功的连接测试,我们需要SASL和可信的.pem证书。

我已经尝试使用多个库连接,但我不知道如何设置连接属性和我需要。

我尝试以下this guide上手。

pyodbc尝试通过设置:

Driver,Host,Port,Database,AuthMech=3,UseSASL=1,UID,PWD,SSL=1

在我的连接字符串

,但我总是最后:

pyodbc.Error: ('HY000', '[HY000] [Cloudera][ImpalaODBC] (100) Error from the Impala Thrift API: No more data to read. (100) (SQLDriverConnect); [HY000] [Cloudera][ImpalaODBC] (100) Error from the Impala Thrift API: No more data to read. (100)')

我不知道我应该如何设置证书所以这可能导致这个错误。 我也看过impyla,但我不确定如何在那里设置连接参数。

有人可以阐明如何运行从一个本地Windows用户查询到kerberised黑斑羚服务器的任何轻?哪些参数需要设置,他们期望什么值?代码示例表示赞赏。我不在乎使用哪个库,尽管看起来我无法安装thrift-sasl。请询问任何所需的附加信息,我会更新我的问题。

显然,我可以从我以前配置的ODBC驱动程序/连接中受益。 通过提供我在ODBC管理员工具中找到的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()