我想在Hbase中保存我的数据。所以我想连接Nodejs和Hbase。我找到了一个教程http://www.amicksolutions.com/blog/hadoop-using-nodejs-with-hbase并且它的工作原理。这是以下Hbase连接代码:
var thrift = require('thrift'),
HBase = require('./gen-nodejs/HBase.js'),
HBaseTypes = require('./gen-nodejs/HBase_types.js'),
connection = thrift.createConnection('localhost', 9090, {
transport: thrift.TBufferedTransport,
protocol: thrift.TBinaryProtocol
});
connection.on('connect', function() {
var client = thrift.createClient(HBase,connection);
client.getTableNames(function(err,data) {
if (err) {
console.log('get table names error:', err);
} else {
console.log('hbase tables:', data);
}
connection.end();
});
});
connection.on('error', function(err){
console.log('error:', err);
});
以上代码工作正常,我能够列出所有表,但问题是我也想做CURD操作。我已经搜索了很多但没有找到关于这个模块的正确文档,如何做其他操作,比如get,put。
这是我找到的另一个模块https://github.com/wdavidw/node-hbase拥有良好的文档,但我无法连接以下代码:
var assert = require('assert');
var hbase = require('hbase');
hbase({ host: '127.0.0.1', port: 9090 })
.table('my_table' )
.create('my_column_family', function(err, success){
this
.row('my_row')
.put('my_column_family:my_column', 'my value', function(err, success){
this.get('my_column_family', function(err, cells){
this.exists(function(err, exists){
assert.ok(exists);
});
});
});
})
这可能是我必须在这里使用一些协议。我不知道什么是捕获。我无法连接并收到以下错误:
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
另一个困惑是https://github.com/wdavidw/node-hbase这个模块是否使用thrift API?还有其他解决方法吗?
答案 0 :(得分:2)
这就是我完成插入的方式:
ng-if,ng-show,ng-hide
答案 1 :(得分:0)
尝试与node-hbase建立时遇到同样的错误:
{
[Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect'
}
我的解决方案基于hbase.apache.org book, chapter: REST。在hbase目录中的hbase服务器上(对我来说是/usr/local/hbase/
,为了更好的概述),我跑了:
./bin/hbase rest start -p 8080
它启动REST服务器,端口8080
是默认服务器,根据您的需要进行调整。
之后,运行node-hbase文档中的代码:
var assert = require('assert');
var hbase = require('hbase');
hbase({ host: '127.0.0.1', port: 8080})
.table('my_table' )
.create('my_column_family', function(err, success){
this
.row('my_row')
.put('my_column_family:my_column', 'my value', function(err, success){
this.get('my_column_family', function(err, cells){
this.exists(function(err, exists){
assert.ok(exists);
});
});
});
})
按预期工作。