2024年NodeJS兼容Parquet 2.0的可用解析库推荐
推荐支持Parquet 2.0的NodeJS/TypeScript维护中解析库
针对你在NodeJS Lambda中解析Parquet 2.0文件为JSON数组的需求,推荐以下几个仍在维护、支持TypeScript且适配Lambda场景的库:
1. @apache-arrow/parquet + apache-arrow
- 属于Apache官方生态,长期维护,完全支持Parquet 2.0规范
- TypeScript类型定义完善,无需强制开启
esModuleInterop这类特殊配置 - 基于Apache Arrow内存模型,解析效率高,部署体积可控(核心包体积远低于250MB限制)
- 使用示例:
import { readFileSync } from 'fs'; import { ParquetReader } from '@apache-arrow/parquet'; import { tableFromIPC } from 'apache-arrow'; async function parseParquetToJson(filePath: string) { const buffer = readFileSync(filePath); const reader = await ParquetReader.open(buffer); const table = await reader.readTable(); reader.close(); return table.toArray().map(row => row.toJSON()); } - Lambda适配:打包时可通过tree-shaking剔除无用代码,进一步缩小部署包体积
2. parquet-wasm
- 基于WebAssembly实现的轻量Parquet解析库,维护活跃
- 完全支持Parquet 2.0,内置TypeScript类型
- 包体积极小(核心Wasm文件仅1-2MB),完美适配Lambda的250MB部署限制
- 使用示例:
import { readFileSync } from 'fs'; import { ParquetReader } from 'parquet-wasm'; function parseParquetToJson(filePath: string) { const buffer = readFileSync(filePath); const reader = ParquetReader.open(buffer); const jsonArray = reader.readRecordsAsJson(); reader.close(); return jsonArray; } - 注意:Wasm在Lambda环境中运行无兼容性问题,无需额外配置
3. pyarrow(备选方案,通过child_process调用)
- 若上述JS库仍无法满足需求,可通过NodeJS调用Python的pyarrow库(官方维护,对Parquet 2.0支持完善)
- 部署时可借助Lambda Layer封装轻量Python环境,整体体积可控制在250MB以内
- 适合对解析兼容性要求极高的场景,TypeScript可通过类型定义封装调用逻辑
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

