⭐ 觉得好用?收藏备用,下次直接打开
📑
拖拽 Parquet 文件到此处
支持 .parquet · .pq(Snappy / GZIP / ZSTD / Brotli / LZ4 自动解压)
🔒 文件仅在浏览器本地解析,不上传任何服务器

Parquet 在线预览 把 Apache Parquet 文件直接拖进浏览器就能看到列 schema、数据类型、压缩方式、行数和前 N 行数据。底层用 hyparquet——一个纯 JavaScript 的 Parquet 解析器,整个包不到 50 KB,不依赖 WebAssembly,文件不出本地。

为什么单独做一个预览器

Parquet 是数据工程师每天打交道的格式,但目前浏览器侧的轻量预览工具几乎没有——要么得装 pandas / polars,要么得开 DuckDB CLI,要么用商业 SaaS 上传文件。这个工具的目标只有一个:3 秒看到 schema 和样本数据,不学语法、不装环境、不上传。

隐私设计

整个工具没有任何后端——文件用 File.arrayBuffer() 读进内存,hyparquet 在浏览器里解析。可以断网用,也可以在 DevTools Network 面板里验证。适合敏感数据:内部业务表、客户日志、未脱敏的训练集,都不会离开你的电脑。

一屏看完

界面分三块:左侧 Schema 列表(列名、逻辑类型、物理类型、是否可空),右上 统计卡(行数、列数、行组数、文件大小、解压后大小、压缩比、压缩 codec、生成工具),右下 数据预览表(按页 100 行翻页、列头带类型、行号在最左)。

翻页按需读

hyparquet 支持按行范围解码,所以翻页不会把整个文件读完——即使几千万行的文件也能瞬间翻到第 1 页。但「导出全部」会把所有行解码到内存生成 CSV/JSON,超过 50 万行的文件会自动降级到只导出当前页,避免浏览器卡死。

配套工具

只想瞄一眼用本工具就够了。如果想做 SQL 查询、多文件 JOIN、聚合分析,点页面底部的 DuckDB SQL 查询台——同样浏览器内运行、同样不上传,但能跑完整 SQL 引擎。两个工具配合使用刚好覆盖「查看 → 探索 → 分析」整条数据工程链路。

📍使用场景

  • 拿到一个陌生 .parquet 想瞄一眼同事甩过来一个 events.parquet 不知道里头长啥样,拖进来 3 秒看到列名、类型、行数和压缩方式,决定要不要进一步处理。
  • 验证写出去的 Parquet 没有问题pandas / polars / Spark / DuckDB 写出来的 Parquet,下载到本地拖进来确认 schema 对、行数对、压缩用的是 Snappy 还是 ZSTD。
  • 把 Parquet 转成 CSV/JSON 给别人客户/同事不会装 pandas 但要看数据,前 N 行预览没问题就直接导出成 CSV 给运营,或者 JSON 给前端 mock。
  • 排查写入工具的差异同样的数据用不同库写出来体积差几倍?用本工具看双方的压缩 codec、行组数、字典编码情况,定位是 codec 还是 row group size 的问题。

常见问题

文件会上传到服务器吗?

完全不会。底层是 hyparquet 这个纯 JavaScript 的 Parquet 解析器,全部在浏览器里跑。文件用 File.arrayBuffer() 读进内存就开始解析,没有任何网络请求。可以断网用,也可以打开 DevTools 的 Network 面板自行验证。适合处理敏感数据:内部表、客户日志、未脱敏的 dump 都不会离开你的电脑。

支持哪些压缩格式?

常见的 Snappy / GZIP / ZSTD / Brotli / LZ4_RAW 都直接读,由 hyparquet-compressors 配套库提供。不需要 wasm 也不需要外部解压器。如果遇到 LZO(已废弃)或 LZ4_HADOOP 这种小众 codec 会报错——这些已经基本没人用了,pandas/polars/duckdb/spark 默认都不会写出。

多大的文件能打开?

1-2 GB 以内比较稳定。整个文件被读进 ArrayBuffer,再加上解码列时的临时数组,内存峰值大约是文件大小的 2-3 倍。如果你的文件超过 2 GB,建议先用本地的 DuckDB / pandas 拆成多个 row group 再过来看,或者直接用本工具兄弟项目「DuckDB SQL 查询台」——它支持流式读取,对超大文件更友好。

嵌套字段(struct/list/map)能看吗?

能解析、能预览。叶子列会显示完整的点分路径(例如 address.citytags.list.element),数据预览中嵌套对象/数组会被序列化成 JSON 字符串显示。如果你的 Parquet 来自 Spark / Iceberg / GeoParquet,结构会很深,建议在专门的「DuckDB SQL 查询台」里用 UNNEST / ->> 操作符更舒服。

翻页是把整个文件读完再翻吗?

不是,按需读取。每翻一页只解码当前页对应的行范围(hyparquet 的 rowStart / rowEnd 参数),所以即使是几千万行的文件也能瞬间翻到第 1 页。但「导出全部」会把整个文件解码到内存,超过 50 万行会自动降级为只导出当前页防止浏览器卡死——大文件请用 DuckDB SQL 工具的 SQL 导出。

时间戳/Decimal/UUID 显示对吗?

基本对。Timestamp 按 logical type 解码(毫秒/微秒/纳秒,是否带 UTC),显示为 ISO-8601;Decimal 当前以原始整数显示(待补 scale 还原);Date 转成 YYYY-MM-DDUUID 显示为字节预览。如果某列显示成 <bytes 16> 类的字节预览,多半是 FIXED_LEN_BYTE_ARRAY 但没带 logical type 提示——原始 Parquet 文件本身没标注,工具无从猜测。

这工具和 DuckDB SQL 查询台有什么区别?

预览器专注「快速看一眼」:拖进去 3 秒看到 schema、统计、前 N 行,零学习成本,包体积小(hyparquet 约 50 KB)。SQL 查询台面向「真分析」:能跑 SELECT/JOIN/聚合/窗口函数,能多文件 JOIN,能在浏览器里跑复杂 SQL,但 DuckDB-Wasm 包体积约 35 MB,首次加载需要几秒。只想看下文件结构用本工具;想做查询/聚合点页面底部的「DuckDB SQL 查询台」。