Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将node.js应用程序连接到配置单元时出错_Node.js_Configuration_Hive_Node Modules - Fatal编程技术网

将node.js应用程序连接到配置单元时出错

将node.js应用程序连接到配置单元时出错,node.js,configuration,hive,node-modules,Node.js,Configuration,Hive,Node Modules,我使用node hive和thrift将我的node js应用程序连接到hive,但它们都不起作用。是否有其他节点模块可用于连接到配置单元?由于节点和两个模块都已放弃,尚未提交4到5岁的用户,我遇到了相同的问题,我正在使用节点0.12,下面是我的解决方案 步骤1:您必须设置Hiveserver2,我的hive版本是1.2,hadoop版本是2.7 如果不想执行步骤1,请将节点js升级到4.5>并使用 在我的情况下,我不想升级我的节点版本,所以我尝试通过JDBC驱动程序npm进行连接 步骤2:使

我使用node hive和thrift将我的node js应用程序连接到hive,但它们都不起作用。是否有其他节点模块可用于连接到配置单元?

由于节点和两个模块都已放弃,尚未提交4到5岁的用户,我遇到了相同的问题,我正在使用节点0.12,下面是我的解决方案

步骤1:您必须设置Hiveserver2,我的hive版本是1.2,hadoop版本是2.7

如果不想执行步骤1,请将节点js升级到4.5>并使用

在我的情况下,我不想升级我的节点版本,所以我尝试通过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);
            });

        });
     });    
}); 

如果无法使用Java,并且必须通过SASL身份验证连接到配置单元服务器,则可以使用npm lib
Hive driver

下面是一个用法示例:

const hive = require('hive-driver');
const { TCLIService, TCLIService_types } = hive.thrift;
const client = new hive.HiveClient(
    TCLIService,
    TCLIService_types
);
const utils = new hive.HiveUtils(
    TCLIService_types
);

client.connect(
    {
        host: 'localhost',
        port: 10000
    },
    new hive.connections.TcpConnection(),
    new hive.auth.PlainTcpAuthentication({
        username: 'user name',
        password: 'password'
    })
).then(async client => {
    const session = await client.openSession({
        client_protocol: TCLIService_types.TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V10
    });
    const operation = await session.executeStatement(
        'CREATE TABLE pokes ( foo INT, bar INT )'
    );
    await utils.waitUntilReady(operation, false, () => {});

    await operation.close();
    await session.close();
});


如果可能的话,我会用Java编写一个简单的服务器Instead@AlexanderMills可以,但这是Node.js的解决方案,因为连接库已被去除