You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用druiddb连接Apache Druid时部分列名未显示问题求助

问题描述

本地部署的Apache Druid从Kafka流加载数据后,在Druid控制台能看到malaria_cases_full数据源的完整列,但使用druid-dbapi库执行SELECT *查询并转成pandas DataFrame时,部分列名丢失,DataFrame的列显示为默认的数字索引。

用到的代码如下:

from druiddb import connect
import pandas as pd

druid_host = "localhost"
druid_port = 8888
druid_path = "/druid/v2/sql"
druid_scheme = "http"
druid_query = """SELECT * FROM malaria_cases_full"""
    
druid_connection = connect(host=druid_host, port=druid_port, path=druid_path, scheme=druid_scheme)
druid_cursor= druid_connection.cursor()
df = pd.DataFrame(druid_cursor.execute(druid_query))
df.head(n =10)

Druid控制台列名展示:
Druid列名截图

查询后DataFrame列缺失情况:
DataFrame列名缺失截图

解决方法

方法1:手动从cursor获取列名构造DataFrame

druid-dbapi的cursor对象自带description属性,包含查询结果的列名信息。修改代码如下:

from druiddb import connect
import pandas as pd

druid_host = "localhost"
druid_port = 8888
druid_path = "/druid/v2/sql"
druid_scheme = "http"
druid_query = """SELECT * FROM malaria_cases_full"""
    
druid_connection = connect(host=druid_host, port=druid_port, path=druid_path, scheme=druid_scheme)
druid_cursor= druid_connection.cursor()
druid_cursor.execute(druid_query)

# 提取列名
columns = [desc[0] for desc in druid_cursor.description]
# 用列名构造DataFrame
df = pd.DataFrame(druid_cursor.fetchall(), columns=columns)
df.head(n=10)

方法2:使用pandas的read_sql直接读取(更简洁)

pandas支持通过DBAPI连接直接执行SQL并返回带列名的DataFrame,代码可简化为:

from druiddb import connect
import pandas as pd

druid_host = "localhost"
druid_port = 8888
druid_path = "/druid/v2/sql"
druid_scheme = "http"
druid_query = """SELECT * FROM malaria_cases_full"""
    
with connect(host=druid_host, port=druid_port, path=druid_path, scheme=druid_scheme) as conn:
    df = pd.read_sql(druid_query, conn)
df.head(n=10)

额外检查步骤

  1. 先在Druid控制台的SQL查询界面执行SELECT * FROM malaria_cases_full,确认返回结果包含所有预期列,排除Druid本身的数据配置问题。
  2. 若仍有列缺失,检查Druid数据源的列配置:确认“消失”的列是可查询的维度/度量,而非仅用于数据摄取的内部辅助列。

内容的提问来源于stack exchange,提问作者ARAT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:22:36