用远程执行的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()