NodeJS - 读取 Parquet 文件

Joe*_*Joe 7 javascript node.js typescript parquet

有谁知道用 NodeJS 读取镶木地板文件的方法?

我尝试过node-parquet-> 非常努力(但可能)安装 - 它大部分时间都可以工作,但不能用于读取数字(数字数据类型)。

也尝试过,parquetjs但只能读取由它自己的库创建的镶木地板文件。任何用 Spark 或 Python 创建的东西 - 无法读取。

谢谢

sha*_*359 7

有谁知道用 NodeJS 读取镶木地板文件的方法吗?

我发现了很多库,但大多数都已经死了/没有维护。

还尝试了 parquetjs,但只能读取由其自己的库创建的 parquet 文件。使用 Spark 或 Python 创建的任何内容 - 无法读取。

我还没有尝试过这个库,但镶木地板有一个定义的规格。我们应该能够读取通过 JavaScript 中的 python 或 Spark 创建的 parquet 文件。

其他选项:

  • DuckDB - 我建议尝试这个库。DuckDB是一个进程内嵌入式库/数据库。

下面的代码片段使用DuckDB直接从磁盘读取 parquet 数据。

var duckdb = require('duckdb');
var db = new duckdb.Database(':memory:');
db.all("SELECT * FROM READ_PARQUET('D:\\sample\\userdata1.parquet') WHERE Country='Canada' LIMIT 3", function(err, res) {
  if (err) {
    throw err;
  }
  console.log(res)
});
Run Code Online (Sandbox Code Playgroud)

DuckDB 有很多围绕 Parquet 构建的功能。

  • 直接在磁盘上的 parquet 文件上运行 SQL 查询,从 S3 读取,从 HTTP 端点读取,我们甚至可以将非常大的 parquet 文件加载为 DuckDB 格式并在数据库表上运行查询,将 parquet 数据与其他格式(如 CSV)连接。
  • 将 parquet 文件写入磁盘,将 parquet 写入 s3 存储桶。
  • 单文件读取、多文件读取、读取文件夹/使用 glob 表达式。
  • 读取架构和元数据、页脚统计信息。
  • Parquet 投影下推、滤镜下推。

文件: