通过 Python 从 Impala 访问表

Posted

技术标签:

【中文标题】通过 Python 从 Impala 访问表【英文标题】:Access tables from Impala through Python 【发布时间】:2019-07-23 06:31:35 【问题描述】:

我需要在同一 cloudera 服务器上使用 python 通过 CLI 从 Impala 访问表

我尝试了以下代码来建立连接:

def query_impala(sql):
    cursor = query_impala_cursor(sql)
    result = cursor.fetchall()
    field_names = [f[0] for f in cursor.description]
    return result, field_names


def query_impala_cursor(sql, params=None):
    conn = connect(host='xx.xx.xx.xx', port=21050, database='am_playbook',user='xxxxxxxx', password='xxxxxxxx')
    cursor = conn.cursor()
    cursor.execute(sql.encode('utf-8'), params)
    return cursor

但由于我在同一个 cloudera 服务器上,我不需要提供主机名。您能否提供正确的代码以通过 python 访问同一服务器上存在的 Impala/hive 表。

【问题讨论】:

【参考方案1】:

您可以使用 pyhive 连接到 hive 并访问您的 hive 表。

from pyhive import hive
import pandas as pd
import datetime

conn = hive.Connection(host="hostname", port=10000, username="XXXX")
hive.connect('hostname', configuration='hive.execution.engine':'tez')
query="select col1,col2,col3,col4 from db.yourhiveTable"

start_time= datetime.datetime.now()

data=pd.read_sql(query,conn)
print(data)

end_time=datetime.datetime.now()
print 'Finished reading from Hive table', (start_time-end_time).seconds/60.0,' minutes'

【讨论】:

以上是关于通过 Python 从 Impala 访问表的主要内容,如果未能解决你的问题,请参考以下文章

Impala 不适用于 Hbase 表

无法从 impala/hive/spark sql 访问“spark 注册表”

通过 Impala 的 Parquet 压缩类型

如何将数据从 CSV 加载到 impala 的外部表中

从 impala 更新 vertica 中的巨大记录

将 pandas 表写入 impala