Ich habe node-hive und thrift für die Verbindung meiner Knoten-js-Anwendung mit der Struktur verwendet, aber keine von ihnen funktioniert. Gibt es weitere Knotenmodule für die Verbindung mit der Struktur?Fehler beim Verbinden der Anwendung node.js mit der Struktur
Antwort
Als Knoten node-thrift-hive und node-hive beide Module verlassen werden, nicht noch 4 bis 5 Jahre alt Commit, habe ich das gleiche Problem, und ich bin mit Knoten 0.12 und unten ist meine Lösungen.
Schritt -1: Sie Setup Hiveserver2 haben, ist meine hive Version 1.2 und hadoop Version 2,7
https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2
Wenn Sie möchten Ihren Knoten js bis 4,5 nicht folgen Schritt-1 dann ein Upgrade > und jshs2 npm
In meinem Fall verwende ich möchte nicht meine Knoten Version aktualisieren, damit ich JDBC npm
Step-2 über JDBC-Treiber versuchen, eine Verbindung: verwenden Sie den folgenden Code Bienenstock zu verbinden und Fetch die Daten
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 wenn möglich –
Ich würde einfach einen einfachen Server in Java schreiben Stattdessen –
@AlexanderMills ja können Sie, aber das ist die Lösung für Node.js als Verbindung lib ist entzogen –
Sind überprüfen Sie: https://github.com/wdavidw/node-thrift-hive und https://github.com/forward/node-hive? – vanloc