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

如何在Jupyter中获取ClickHouse查询的全部6000万条记录?

解决ClickHouse查询结果在Jupyter中仅加载部分数据的问题

1. 调整ClickHouse客户端的结果行数限制

不同Python客户端库默认会限制返回的结果行数,需手动关闭限制:

  • 若使用clickhouse-driver:
    from clickhouse_driver import Client
    # max_result_rows=0 表示不限制返回行数
    client = Client('localhost', max_result_rows=0)
    full_result = client.execute('SELECT * FROM your_target_table')
    
  • 若使用clickhouse-connect:
    import clickhouse_connect
    # max_rows=0 关闭行数限制
    client = clickhouse_connect.get_client(host='localhost', max_rows=0)
    full_result = client.query('SELECT * FROM your_target_table').result_set
    

2. 分批加载超大规模数据集

6000万条数据一次性加载可能导致内存溢出,建议分批读取:

方法1:LIMIT+OFFSET分页(适合小批量测试,大数据下效率一般)

batch_size = 1000000  # 每次加载100万条
total_count = client.execute('SELECT COUNT(*) FROM your_target_table')[0][0]
all_data = []

for offset in range(0, total_count, batch_size):
    query = f'SELECT * FROM your_target_table LIMIT {batch_size} OFFSET {offset}'
    batch_data = client.execute(query)
    all_data.extend(batch_data)

方法2:基于有序列的范围分页(效率更高)

假设表中有自增ID或时间戳这类有序字段:

batch_size = 1000000
last_value = 0  # 初始值设为有序字段的最小值
all_data = []

while True:
    # 假设有序字段为id,根据实际字段修改
    query = f'SELECT * FROM your_target_table WHERE id > {last_value} ORDER BY id LIMIT {batch_size}'
    batch_data = client.execute(query)
    if not batch_data:
        break
    all_data.extend(batch_data)
    last_value = batch_data[-1][0]  # 更新为当前批次最后一条的id值

3. 先聚合再加载(推荐)

直接加载6000万条数据制作柱状图效率极低,建议在ClickHouse中先完成聚合计算,再加载聚合后的结果:

-- 示例:按分类字段聚合统计数量
SELECT category_field, COUNT(*) AS item_count 
FROM your_target_table 
GROUP BY category_field

将上述查询结果加载到Jupyter,直接用聚合后的少量数据生成柱状图即可。

4. 确认Jupyter的显示限制(非数据加载问题)

Jupyter默认会限制DataFrame的显示行数,但数据实际已加载到内存。可以通过以下代码验证:

import pandas as pd
df = pd.DataFrame(full_result)
print(f"总数据条数:{len(df)}")  # 输出应为6000万左右

# 如果需要显示全部数据,修改pandas显示参数
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:15:03