我应该使用哪个nodejs库来写入HDFS?

我有一个nodejs应用程序,我想将数据写入hadoop HDFS文件系统。 我看到两个主要的nodejs库可以做到这一点:node-hdfs和node-webhdfs。 有人试过了吗? 任何提示? 我应该在生产中使用哪一个?

我倾向于使用node-webhdfs,因为它使用WebHDFS REST API。 node-hdfs似乎是一个c ++绑定。

任何帮助将不胜感激。

你可能想看看webhdfs库。 它为WebHDFS REST API调用提供了很好且直接的(类似于fs模块API)接口。

写入远程文件:

 var WebHDFS = require('webhdfs'); var hdfs = WebHDFS.createClient(); var localFileStream = fs.createReadStream('/path/to/local/file'); var remoteFileStream = hdfs.createWriteStream('/path/to/remote/file'); localFileStream.pipe(remoteFileStream); remoteFileStream.on('error', function onError (err) { // Do something with the error }); remoteFileStream.on('finish', function onFinish () { // Upload is done }); 

从远程文件读取:

 var WebHDFS = require('webhdfs'); var hdfs = WebHDFS.createClient(); var remoteFileStream = hdfs.createReadStream('/path/to/remote/file'); remoteFileStream.on('error', function onError (err) { // Do something with the error }); remoteFileStream.on('data', function onChunk (chunk) { // Do something with the data chunk }); remoteFileStream.on('finish', function onFinish () { // Upload is done }); 

不是好消息!

不要使用node-hdfs。 虽然看起来很有希望,但现在已经过了两年了。 我试图编译它,但它不符合当前libhdfs的符号。 如果你想使用这样的东西,你必须做出自己的nodejs绑定。

你可以使用node-webhdfs,但恕我直言,没有太多的优势。 最好使用http nodejs lib来创build自己的请求。 这里最难的部分是尝试保持nodejs的非同步性质,因为您可能首先要创build一个文件夹,然后在成功创build它之后,创build一个文件,然后写入或附加数据。 一切通过http请求,你必须发送和等待的答案,然后继续….

至lessnode-webhdfs可能是一个很好的参考,你看看,并开始自己的代码。

Br,Fabio Moreira