将node.js应用程序连接到配置单元时出错 [英] Error in connecting node.js application to hive
问题描述
我使用节点配置单元和节点将我的节点js应用程序连接到配置单元,但它们都不起作用。是否有任何其他节点模块可以连接到配置单元?
作为节点 node-thrift-hive 和 node-hive 这两个模块都放弃了,还没有提交仍然是4到5岁,我有同样的问题,我使用节点0.12和以下是我的解决方案。
第1步:你必须设置Hiveserver2,我的配置单元版本是1.2,并且hadoop版本是2.7
https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2
如果您不想遵循Step-1,那么将您的节点js升级到4.5>并使用 jshs2 npm
在我的情况下,我不想升级我的节点版本,所以我尝试通过JDBC连接dri vers JDBC npm
第二步:使用下面的代码连接配置单元并获取数据
var JDBC = require('jdbc');
var jinst = require('jdbc / lib / jinst');
// isJvmCreated在第一次java调用之后将成立。发生这种情况时,不能调整
//选项和类路径。
if(!jinst.isJvmCreated()){
//在这里添加项目所需的所有java选项。你有机会到
//在第一次java调用之前设置选项。
jinst.addOption( - Xrs);
//在这里添加项目所需的所有jar文件。你有机会到
//在第一次java调用之前设置classpath。
jinst.setupClasspath(['./ drivers / hsqldb.jar',
'./drivers/derby.jar',
'./drivers/derbyclient.jar',
'./drivers/derbytools.jar',
'./lib/drivers/hive-jdbc-1.2.1.jar',
'./lib/drivers/hive-exec-1.2。 1.jar',
'./lib/drivers/hive-common-1.2.1.jar',
'./lib/drivers/hive-metastore-1.2.1.jar',
'./lib/drivers/hive-service-1.2.1.jar',
'./lib/drivers/httpclient-4.3.jar',
'./lib/drivers/ httpcore-4.3.jar',
'./lib/drivers/libthrift-0.9.1.jar',
'./lib/drivers/libfb303-0.9.0.jar',
'./lib/drivers/hadoop-common-2.7.1.jar',
'./lib/drivers/slf4j-api -1.7.21.jar',
'./lib/drivers/org-apache-commons-logging.jar'
]);
}
var config = {
url:'jdbc:hive2://127.0.0.1:10000',
user:'demo',
密码:'',
minpoolsize:2,
maxpoolsize:3
};
var testpool = null;
var testconn = null;
var hsqldb = new JDBC(config);
hsqldb.initialize(function(err){
if(err){
console.log(err);
}
});
hsqldb.reserve(function(err,connObj){
console.log(Using connection:+ connObj.uuid);
var conn = connObj.conn;
conn.createStatement(function(err,statement){
statement.executeQuery(select * from test1 limit 1,function(err,resultSet){
//console.log(resultSet) ;
resultSet.toObjArray(function(err,results){
console.log(results);
});
});
} );
});
I have used node-hive and thrift for connecting my node js application to hive, but none of them works. Are there any other node modules for getting connected to hive ?
As node node-thrift-hive and node-hive both module are abandoned, not commit still 4 to 5 year old, I have same issue and I am using Node 0.12 and below is my solutions.
Step -1: You have to setup Hiveserver2 , my hive version is 1.2 and hadoop version 2.7
https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2
If you don't want to follow Step-1 then upgrade your node js to 4.5 > and use jshs2 npm
In my case I don't want to upgrade my node version so I try to connect via JDBC drivers JDBC npm
Step-2: Use Below code to connect hive and fetch the data
var JDBC = require('jdbc');
var jinst = require('jdbc/lib/jinst');
// isJvmCreated will be true after the first java call. When this happens, the
// options and classpath cannot be adjusted.
if (!jinst.isJvmCreated()) {
// Add all java options required by your project here. You get one chance to
// setup the options before the first java call.
jinst.addOption("-Xrs");
// Add all jar files required by your project here. You get one chance to
// setup the classpath before the first java call.
jinst.setupClasspath(['./drivers/hsqldb.jar',
'./drivers/derby.jar',
'./drivers/derbyclient.jar',
'./drivers/derbytools.jar',
'./lib/drivers/hive-jdbc-1.2.1.jar',
'./lib/drivers/hive-exec-1.2.1.jar',
'./lib/drivers/hive-common-1.2.1.jar',
'./lib/drivers/hive-metastore-1.2.1.jar',
'./lib/drivers/hive-service-1.2.1.jar',
'./lib/drivers/httpclient-4.3.jar',
'./lib/drivers/httpcore-4.3.jar',
'./lib/drivers/libthrift-0.9.1.jar',
'./lib/drivers/libfb303-0.9.0.jar',
'./lib/drivers/hadoop-common-2.7.1.jar',
'./lib/drivers/slf4j-api-1.7.21.jar',
'./lib/drivers/org-apache-commons-logging.jar'
]);
}
var config = {
url: 'jdbc:hive2://127.0.0.1:10000',
user : 'demo',
password: '',
minpoolsize: 2,
maxpoolsize: 3
};
var testpool = null;
var testconn = null;
var hsqldb = new JDBC(config);
hsqldb.initialize(function(err) {
if (err) {
console.log(err);
}
});
hsqldb.reserve(function(err, connObj) {
console.log("Using connection: " + connObj.uuid);
var conn = connObj.conn;
conn.createStatement(function(err, statement) {
statement.executeQuery("select * from test1 limit 1",function(err,resultSet){
//console.log(resultSet);
resultSet.toObjArray(function(err, results) {
console.log(results);
});
});
});
});
这篇关于将node.js应用程序连接到配置单元时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!