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

在GCP Vertex AI中如何加载大体积Google BigQuery表到Polars DataFrame?

解决GCP Vertex AI中加载超大BigQuery表到Polars DataFrame的内存问题

针对500-600GB、1亿行的超大BigQuery表,直接全量加载会触发内存限制导致内核崩溃,以下是几种可行的解决方案:

1. 分块批量读取处理

通过BigQuery查询的分页功能,每次读取一小部分数据,避免一次性占用过多内存。可逐块处理数据,或分块写入磁盘(如Parquet格式)后再合并。

import polars as pl
from google.cloud import bigquery

client = bigquery.Client()
query = f"SELECT * FROM `{project_id}.{dataset_id}.table_1`"
query_job = client.query(query)

# 按每页100万行分块读取
for page in query_job.result(page_size=1_000_000):
    # 将当前页的Arrow数据转为Polars DataFrame
    chunk_df = pl.from_arrow(page.to_arrow())
    
    # 在这里添加你的数据处理逻辑,比如清洗、计算
    # 示例:将分块数据写入Parquet文件
    chunk_df.write_parquet(f"chunk_{page.num}.parquet")

# 后续可合并所有分块文件
# combined_df = pl.read_parquet("chunk_*.parquet")

2. 使用BigQuery Storage API流式读取

BigQuery Storage API提供了更高效的大表读取方式,支持直接流式获取数据,无需将全量结果加载到内存,适合超大规模数据集。

import polars as pl
from google.cloud import bigquery_storage_v1

client = bigquery_storage_v1.BigQueryReadClient()
table_path = f"projects/{project_id}/datasets/{dataset_id}/tables/{table_1}"

# 创建读取会话,指定数据格式为Arrow
read_session = client.create_read_session(
    table=table_path,
    data_format=bigquery_storage_v1.DataFormat.ARROW,
    read_options=bigquery_storage_v1.ReadOptions(
        # 可选:只读取需要的列,减少数据量
        selected_fields=["col1", "col2", "col3"]
    )
)

# 流式读取数据并处理
for stream in read_session.streams:
    reader = client.read_rows(stream.name)
    for batch in reader.rows().pages:
        chunk_df = pl.from_arrow(batch.to_arrow())
        # 处理当前分块数据
        print(f"处理了{len(chunk_df)}行数据")

3. 升级Vertex AI Notebook资源

如果业务需要全量加载数据进行处理,可以临时升级Notebook的实例规格,选择高内存机型(如n1-highmem-32、n2-highmem-64等)。注意:更高配置的实例会带来更高成本,建议处理完成后及时降级。

4. 先在BigQuery中预处理数据

通过BigQuery的SQL提前过滤、聚合或采样数据,减少需要加载到Polars的数据量:

  • 只选择业务需要的列(避免加载无用列)
  • 用WHERE条件过滤不需要的行
  • 对数据进行聚合(如GROUP BY)或采样(如TABLESAMPLE SYSTEM (10 PERCENT))

示例查询:

SELECT col1, col2, agg_col
FROM `{project_id}.{dataset_id}.table_1`
WHERE date >= '2024-01-01'
GROUP BY col1, col2

内容的提问来源于stack exchange,提问作者Solomon Papathoti Leo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:26:13