NodeJS - 读取 Parquet 文件

15

有没有人知道如何使用NodeJS读取parquet文件?

我尝试了node-parquet,但安装非常困难(虽然可能),它大多数时间可以工作,但无法读取数字数据类型。

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

谢谢


Parquet 应该是标准的,不是吗? - Rony Cohen
5
我有同样的问题。在尝试了几个包之后,我发现来自https://github.com/ZJONSSON/parquetjs的parquetjs-lite似乎能够读取到目前为止我尝试过的所有parquet文件。 - B.Brink
@B.Brink 谢谢... parquetjs-lite 对我有用。 - Dexter
1个回答

7
有没有人知道如何使用NodeJS读取parquet文件的方法?
我找到了很多库,但大部分都已经死掉或者不再维护。
以下是一些库:
- parquetjs - https://github.com/ironSource/parquetjs/issues/128 - parquets - https://github.com/kbajalc/parquets/issues/38 - parquetjs-lite - https://github.com/ZJONSSON/parquetjs - node-parquet - https://github.com/skale-me/node-parquet/issues/62

我也尝试过parquetjs,但它只能读取由其自己的库创建的parquet文件。任何使用Spark或Python创建的文件都无法读取。

我没有尝试过这个库,但是parquet有一个定义好的规范。我们应该能够在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)
});

DuckDB围绕parquet构建了许多功能。

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

文档:


有关此事的任何更新吗? - Fadi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接