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

如何在终端中提取Parquet文件的指定N行数据

一、终端提取Parquet文件的N行并输出为Parquet格式

parquet-tools的cat命令会把Parquet转成文本输出,管道给head只能得到文本片段,没法保留Parquet格式。推荐用DuckDB(轻量型列式数据库,终端友好)来实现,它能直接读取Parquet并输出指定行数的Parquet文件:

本地安装DuckDB的情况

# 提取前10行到output.parquet,替换10为你需要的行数
duckdb -c "COPY (SELECT * FROM 'input.parquet' LIMIT 10) TO 'output.parquet' (FORMAT PARQUET);"

用Docker运行DuckDB的情况

如果不想本地安装,直接用Docker挂载当前目录执行:

# 替换10为目标行数,input.parquet是源文件,output.parquet是输出文件
docker run --rm -v $(pwd):/data duckdb/duckdb -c "COPY (SELECT * FROM '/data/input.parquet' LIMIT 10) TO '/data/output.parquet' (FORMAT PARQUET);"

备选方案:用Spark命令行(需Spark环境)

如果你已经有Spark环境,也可以用一行命令完成:

spark-shell -e "spark.read.parquet('input.parquet').limit(10).write.parquet('output.parquet')"
二、生成测试用Parquet文件

同样用DuckDB就能快速生成,无需写脚本:

直接生成带测试数据的Parquet

duckdb -c "
CREATE TABLE test (id INT, name VARCHAR, value DOUBLE);
INSERT INTO test VALUES (1, 'a', 1.1), (2, 'b', 2.2), (3, 'c', 3.3), (4, 'd', 4.4);
COPY test TO 'test.parquet' (FORMAT PARQUET);
"

Docker版本生成测试文件

docker run --rm -v $(pwd):/data duckdb/duckdb -c "
CREATE TABLE test (id INT, name VARCHAR, value DOUBLE);
INSERT INTO test VALUES (1, 'a', 1.1), (2, 'b', 2.2), (3, 'c', 3.3), (4, 'd', 4.4);
COPY test TO '/data/test.parquet' (FORMAT PARQUET);
"

从CSV转Parquet(可选)

如果已有CSV测试数据,也可以转成Parquet:

  1. 先创建test.csv文件:
id,name,value
1,a,1.1
2,b,2.2
3,c,3.3
4,d,4.4
  1. 用DuckDB转换:
duckdb -c "COPY (SELECT * FROM 'test.csv') TO 'test.parquet' (FORMAT PARQUET);"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:30:14