하이브에 노드 js 응용 프로그램을 연결하기 위해 노드 하이브 및 절약을 사용했지만 그 중 아무 것도 작동하지 않습니다. 하이브에 연결하기위한 다른 노드 모듈이 있습니까?node.js 응용 프로그램을 하이브에 연결하는 중 오류가 발생했습니다
답변
노드가 node-thrift-hive과 node-hive이므로 두 모듈이 모두 버려지고 4 ~ 5 년 후에도 똑같은 문제가 발생하며 노드 0.12를 사용하고 있습니다. 내 솔루션이 아래에 나와 있습니다.
단계 -1 : 당신은 설정 Hiveserver2에 있고, 내 하이브 버전 1.2 및 하둡 버전 당신이 따라하고 싶지 않은 경우 2.7
https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2
스텝 1을 다음 4.5로 노드 JS 업그레이드 > 내가 JDBC 드라이버를 통해 연결을 시도 그래서 내 노드 버전을 업그레이드하지 않으려는 내 경우에는 jshs2 npm
를 사용 JDBC NPM
스텝 2 : 하이브를 연결하는 코드 아래 사용하여 데이터가
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);
});
});
});
});
github link if possible –
난 그냥 자바로 간단한 서버를 작성하겠다. –
@AlexanderMills 네, 할 수는 있지만, 이건 Node.js가 해결할 수있는 연결 lib이다. –
당신은 확인 있습니까 인출 : https://github.com/wdavidw/node-thrift-hive 및 https://github.com/forward/node-hive? – vanloc