读取镶木地板文件(nodeJS)-parquetjs模块时出错

时间:2017-12-24 12:34:02

标签: javascript node.js

我对nodejs的体验非常基础,所以请耐心等待。我正在尝试用以下方法编写和阅读镶木地板文件:

https://github.com/ironSource/parquetjs

我在那里遵循示例(使用节点8)并成功编写了'fruits.parquet'

但是,当我尝试阅读时:

async function read() {
let reader = await parquetjs.ParquetReader.openFile('fruits.parquet');

let cursor = reader.getCursor();
let record = null;
while (record = await cursor.next()) {
    console.log(record);
}
}
read();

我明白了:

附加调试器。 (节点:14795)[DEP0062]弃用警告:node --inspect --debug-brk已弃用。请改用node --inspect-brk。 (node:14795)UnhandledPromiseRejectionWarning:未处理的promise promise(拒绝ID:1):错误:读取失败 (节点:14795)[DEP0018]弃用警告:不推荐使用未处理的拒绝承诺。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。 等待调试器断开..

任何想法如何调试 - 它发生在openFile('fruits.parquet')上 我知道该文件存在,我也试图确保对文件中的所有文件进行读/写访问。

感谢。

2 个答案:

答案 0 :(得分:0)

parquetjs.ParquetReader.openFile('fruits.parquet');

导致拒绝承诺(可能文件位置不正确)。

问题在于错误未得到处理并以某种方式“吞噬”

尝试捕获错误以正确调试它:

try {
   let reader = await parquetjs.ParquetReader.openFile('fruits.parquet');
} catch (e){
  console.log(e); // or breakpoint, etc
  throw e;
}

答案 1 :(得分:0)

此答案并非完全针对调试问题,而是替代解决方案。 要打开本地文件,我在parquetjs-lite包中使用了以下代码,希望这会有所帮助。 parquetjs-lite还可以帮助读取s3存储桶文件

   const parquet = require("parquetjs-lite");    

   const readParquetFile = async () => {

  // create new ParquetReader
  let reader = await parquet.ParquetReader.openFile("fruits.parquet");

  // create a new cursor
  let cursor = reader.getCursor();

  // read all records from the file and print them
  let record = null;

  while ((record = await cursor.next())) {
    console.log(record);
  }

  await reader.close();
}

别忘了最后关闭阅读器。

我是回答stackoverflow的新手,请忽略它是否有用。