在Node.js中读取实木复合地板文件

时间:2020-09-26 08:52:23

标签: javascript node.js apache parquet apache-arrow

我正在尝试以下代码(来自parquetjs-lite和stackoverflow的示例)来读取nodejs中的Parquet文件:

const readParquetFile = async () => {
try {
       // create new ParquetReader that reads from test.parquet
       let reader = await parquet.ParquetReader.openFile('test.parquet');
    }
catch (e){
    console.log(e); 
    throw e;
  }
 
// 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();

  };

当我运行此代码时,什么都没有发生。没有任何内容写入控制台,出于测试目的,我只使用了一个很小的csv文件,该文件是使用python转换为镶木地板的。

  1. 是因为我已使用python从csv转换为实木复合地板(对于最终必须使用的大型文件,我找不到对应的JS)。
  2. 我希望我的应用程序能够接收任何镶木地板文件并读取它。在这方面,parquetjs-lite有什么限制。
  3. 我的CSV中有NaN值可能是个问题吗?

任何指针都会有所帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

可能的失败案例是

您正在某个文件中调用此函数,而没有运行Web服务器。 在这种情况下,文件将以异步模式运行,并且异步函数进入回调堆栈,并且主堆栈为空,程序将结束,即使您的调用堆栈中有代码,它也将永远不会运行或记录任何内容。

要解决此问题,请尝试运行网络服务器或更好地使用同步调用

// app.js(没有网络服务器)

const readParquetFile = async () => {
    console.log("running")
}
readParquetFile()
console.log("exit")

运行上述代码时,输​​出将为

exit

// syncApp.js

const readParquetFile = () => {
    console.log("running")
    // all function should be sync
}
readParquetFile()
console.log("exit")

控制台日志将在

running
exit