【问题标题】:Run impala query with remotely executed Python code using ODBC使用 ODBC 使用远程执行的 Python 代码运行 impala 查询
【发布时间】:2017-07-29 07:37:24
【问题描述】:

我目前正试图设置能够对远程 Impala 服务器进行 impala 查询的 Python 代码。

在我的本地 Windows 上,我使用的是 ODBC 驱动程序,该驱动程序已设置并可成功用于在 Tableau 中使用 Impala 检索数据。 我们使用的 Hadoop 环境是 Kerberized。 要使用 ODBC 管理员进行成功的连接测试,我们需要 SASL 和受信任的 .pem 证书。

我已经尝试使用多个库进行连接,但我不确定如何设置连接属性以及我需要哪些。

我尝试关注this guide 开始。

我通过设置尝试了pyodbc

驱动程序,主机,端口,数据库,AuthMech=3,UseSASL=1,UI​​D,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 用户运行查询到使用 kerberos 的 Impala 服务器吗?需要设置哪些参数以及他们期望的值是多少?代码示例表示赞赏。我不在乎使用哪个库,尽管我似乎无法安装thrift-sasl。请询问任何必需的其他信息,我会更新我的问题。

【问题讨论】:

    标签: python-2.7 hadoop odbc cloudera impala


    【解决方案1】:

    显然我可以从我之前配置的 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()
    

    【讨论】:

      猜你喜欢
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 2015-06-15
      • 2023-02-05
      • 1970-01-01
      相关资源
      最近更新 更多