Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我应该使用哪个nodejs库写入HDFS?_Node.js_Hadoop_Hdfs_Webhdfs - Fatal编程技术网

Node.js 我应该使用哪个nodejs库写入HDFS?

Node.js 我应该使用哪个nodejs库写入HDFS?,node.js,hadoop,hdfs,webhdfs,Node.js,Hadoop,Hdfs,Webhdfs,我有一个nodejs应用程序,我想将数据写入hadoop HDFS文件系统。我已经看到两个主要的nodejs库可以做到这一点:NodeHDFS和NodeWebHDFS。有人试过吗?有什么提示吗?我应该在生产中使用哪一种 我倾向于使用节点webhdfs,因为它使用webhdfs REST API。节点HDFS似乎是C++绑定。 任何帮助都将不胜感激。不是好消息 不要使用节点HDF。虽然它看起来很有希望,但现在已经过时两年了。我试图编译它,但它与当前libhdfs的符号不匹配。如果您想使用类似的东西

我有一个nodejs应用程序,我想将数据写入hadoop HDFS文件系统。我已经看到两个主要的nodejs库可以做到这一点:NodeHDFS和NodeWebHDFS。有人试过吗?有什么提示吗?我应该在生产中使用哪一种

我倾向于使用节点webhdfs,因为它使用webhdfs REST API。节点HDFS似乎是C++绑定。 任何帮助都将不胜感激。

不是好消息

不要使用节点HDF。虽然它看起来很有希望,但现在已经过时两年了。我试图编译它,但它与当前libhdfs的符号不匹配。如果您想使用类似的东西,您必须创建自己的nodejs绑定

您可以使用NodeWebHDFS,但在这方面没有太多优势。最好使用http nodejs库来发出您自己的请求。这里最困难的部分是尽量保持nodejs非常异步的特性,因为您可能希望首先创建一个文件夹,然后在成功创建它之后,创建一个文件,最后写入或附加数据。您必须通过http发送所有请求,然后等待答复,然后继续

至少node webhdfs可能是一个很好的参考,让您看看并开始编写自己的代码

比尔, 法比奥·莫雷拉(Fabio Moreira)

你可能想去图书馆看看。它为WebHDFS REST API调用提供了漂亮而直接的接口(类似于
fs
module 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');
管道(remoteFileStream);
remoteFileStream.on('error',函数onError(err){
//对这个错误做点什么
});
on('finish',函数onFinish(){
//上传完成
});
正在从远程文件读取:

var WebHDFS=require('WebHDFS');
var hdfs=WebHDFS.createClient();
var remoteFileStream=hdfs.createReadStream('/path/to/remote/file');
remoteFileStream.on('error',函数onError(err){
//对这个错误做点什么
});
remoteFileStream.on('data',函数onChunk(chunk){
//对数据块执行一些操作
});
on('finish',函数onFinish(){
//上传完成
});

这对我来说是可行的,请确保使用最新稳定版本的nodejs(不是git repo,这导致了一些问题)。如何找到远程文件的路径?