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

如何使用Fugue采样并展示S3上的大型分区Parquet文件?

实现无下载、低内存的Parquet采样与Jupyter展示

要处理S3上的大分区Parquet文件,同时做到不下载全量、不加载全部数据到内存,核心是利用Parquet的列式存储特性,结合支持S3直接访问的工具库,只读取需要的采样数据。下面是具体操作步骤:

1. 安装依赖库

在Jupyter Notebook中执行以下命令,安装所需工具:

!pip install pyarrow s3fs pandas

2. 高效采样指定行数

使用pyarrow.dataset直接对接S3上的Parquet数据集,它能自动识别分区结构,并且支持按需读取数据,不会把全量文件拉到本地或内存:

import pyarrow.dataset as ds
import pandas as pd

# 替换为你的S3路径
s3_parquet_path = "s3://some/path/some_partiitoned_data.parquet"

# 创建S3上的Parquet数据集对象
dataset = ds.dataset(s3_parquet_path, format="parquet", filesystem="s3")

# 读取前N行作为样本(这里取100行,可按需修改)
# 此操作仅读取必要的Parquet数据块,不会加载全量数据
sampled_table = dataset.head(100)

# 转成Pandas DataFrame,方便Jupyter展示
sampled_df = sampled_table.to_pandas()

3. Jupyter中优化展示效果

Pandas DataFrame在Jupyter里默认会渲染成表格,可通过以下设置优化展示细节:

# 显示所有列,避免列被折叠
pd.set_option('display.max_columns', None)
# 调整列宽,防止长文本被截断
pd.set_option('display.max_colwidth', 150)
# 设置数值显示精度
pd.set_option('display.precision', 4)

# 直接输出DataFrame,Jupyter会自动展示美观的表格
sampled_df

补充:随机采样(非顺序样本)

如果需要随机抽取样本而非前N行,可以通过随机选择部分Parquet文件,再从中采样,进一步减少内存占用:

import random
import pyarrow.parquet as pq

# 获取S3上所有Parquet分区文件
all_parquet_files = dataset.files
# 随机挑选少量文件(比如5个,可按需调整)
selected_files = random.sample(all_parquet_files, 5)

# 读取选中的文件,再随机采样指定行数
temp_table = pq.read_table(selected_files, filesystem="s3")
random_sampled_df = temp_table.to_pandas().sample(n=100, random_state=42)

# 展示随机采样结果
random_sampled_df

关键特性说明

  • 无本地下载:所有操作基于S3对象的HTTP范围请求,只拉取需要的Parquet数据块
  • 低内存占用:仅将采样的小部分数据加载到内存,不会处理全量大文件
  • 自动识别分区:无需手动处理分区目录,工具会自动解析Parquet的分区结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:35:21