Какую библиотеку nodejs следует использовать для записи в HDFS?

У меня есть приложение nodejs, и я хочу записать данные в файловую систему Hadoop HDFS. Я видел две основные библиотеки nodejs, которые могут это сделать: node-hdfs и node-webhdfs. Кто-то пробовал? Любые подсказки? Какой из них я должен использовать в производстве?

Я склонен использовать node-webhdfs, так как он использует REST API WebHDFS. node-hdfs кажется привязкой С++.

Любая помощь будет оценена.


person user3161639    schedule 05.01.2014    source источник


Ответы (2)


Вы можете проверить библиотеку webhdfs. Он предоставляет приятный и простой (похожий на fs API модуля) интерфейс для вызовов WebHDFS REST 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
});
person Harri Siirak    schedule 13.02.2014
comment
это работает для меня, обязательно используйте последнюю стабильную версию nodejs (не репозиторий git, который вызвал у меня некоторые проблемы) - person Havnar; 13.08.2014
comment
как найти путь к удаленному файлу? - person Quintessa Anderson; 16.12.2018

Не приятная новость!!!

Не используйте node-hdfs. Хотя это кажется многообещающим, сейчас оно устарело на два года. Я пытался его скомпилировать, но он не соответствует символам текущих libhdfs. Если вы хотите использовать что-то подобное, вам придется создать собственную привязку nodejs.

Вы можете использовать node-webhdfs, но, ИМХО, в этом нет большого преимущества. Лучше использовать http nodejs lib для создания собственных запросов. Самое сложное здесь — попытаться сохранить саму асинхронную природу nodejs, поскольку вы можете сначала создать папку, а затем, после ее успешного создания, создать файл и, наконец, записать или добавить данные. Все через http-запросы, которые вы должны отправить и дождаться ответа, а затем продолжить....

По крайней мере, node-webhdfs может быть хорошей ссылкой для того, чтобы вы взглянули и начали свой собственный код.

Бр, Фабио Морейра

person Fabio Moreira    schedule 07.02.2014