如何从 impala 数据集市显示列名

Posted

技术标签:

【中文标题】如何从 impala 数据集市显示列名【英文标题】:How to show column name from impala datamart 【发布时间】:2020-12-30 04:59:18 【问题描述】:

基本上,我的公司使用 apache impala 进行数据集市。

连接参数在之前定义,连接定义为conn = connect(host=host_name, port=port, user=user, password=password, database=database)

每次我需要一个表时,我都需要调用这样的函数

def impala_connection(host, port, user, password, database):
    conn = connect(host=host_name, port=port, user=user, password=password, database=database)
    cursor = conn.cursor()
    cursor.execute('SELECT * from table1')
    results = cursor.fetchall()
    return results
table1 = pd.DataFrame(impala_connection(host_name, port, user,password, database))

当我调用 table1 时,我的数据框将如下所示

      0     1    2    3    4
0     a     b    c    d    e
1     e     f    g    g    i

其实表有列名,怎么显示?

【问题讨论】:

【参考方案1】:

从数据库使用pd.read_sql 读取限制线。并从df.columns 获取表列名。

import pandas as pd
from sqlalchemy import create_engine

conn = create_engine(
    'impala://user:password@host:port/database'.format(
        host=host,    # your host
        port=port,
        database=database,
        user=user,
        password=password
    )

sql_read = lambda sql: pd.read_sql(sql, conn)
sql_execute = lambda sql: pd.io.sql.execute(sql, conn)

sql = '''
select *
from table1
limit 1
'''
df = sql_read(sql)
print(df.columns)

【讨论】:

文件"<ipython-input-73-1309ee172688>",第13行sql_read = lambda sql: pd.read_sql(sql, conn)^SyntaxError: invalid syntax

以上是关于如何从 impala 数据集市显示列名的主要内容,如果未能解决你的问题,请参考以下文章

是啥让访问 OLAP 多维数据集/数据集市和类似数据结构比访问关系数据库更快?

如何创建可以提高图表性能的聚合表(数据集市)?

如果数据集市有两种不同的粒度,如何解决?

如何在 Impala 中显示复杂数据列(地图类型)中的所有字段?

如何选择第一行中的值为列名的 SQL 数据集?

delphi 如何通过Tdataset数据集 获取数据库列名以及列数?