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

如何无需下载全文件从GCS读取Parquet指定列?

远程读取GCS上Parquet文件的指定列方案

可以实现不用下载完整文件,直接从GCS读取Parquet的指定列,完全基于你当前使用的PyArrow/Pandas,且无需Fuse,适配Cloud Run环境。

核心实现思路

Parquet是列存储格式,文件头部包含所有列的元数据(包括数据块的位置信息)。PyArrow和Pandas支持通过GCS的范围请求,仅下载目标列对应的文件块,而非整个100MB文件,大幅减少耗时。

具体实现代码

方式1:使用PyArrow直接操作

先确保安装依赖:

pip install pyarrow google-cloud-storage

代码示例:

import pyarrow.parquet as pq
from pyarrow.fs import GcsFileSystem

# 初始化GCS文件系统(Cloud Run环境会自动读取服务账号的默认凭据)
gcs_fs = GcsFileSystem()

# GCS文件路径格式:"存储桶名/文件路径.parquet"
gcs_file_path = "your-bucket-name/path/to/target.parquet"

# 仅读取指定列,底层自动发起范围请求拉取所需数据
parquet_table = pq.read_parquet(
    gcs_file_path,
    columns=["用户选择列1", "用户选择列2", "用户选择列3"],
    filesystem=gcs_fs
)

# 转换为Pandas DataFrame供展示
result_df = parquet_table.to_pandas()

方式2:使用Pandas直接读取

Pandas的read_parquet可以直接对接GCS,底层同样依赖PyArrow实现范围请求:

import pandas as pd

df = pd.read_parquet(
    "gs://your-bucket-name/path/to/target.parquet",
    columns=["用户选择列1", "用户选择列2", "用户选择列3"],
    storage_options={"token": "cloud"}  # 自动使用Cloud Run的默认凭据
)

关键注意事项

  • 权限配置:确保Cloud Run的服务账号拥有GCS存储桶的roles/storage.objectViewer权限,否则无法读取文件。
  • 性能优化:如果Parquet文件有分区结构,可以结合filters参数进一步过滤分区,减少读取的数据量。
  • 凭据处理:Cloud Run环境中无需手动配置密钥,会自动加载服务账号的凭据;本地测试时可以通过GOOGLE_APPLICATION_CREDENTIALS环境变量指定密钥文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:05:16