使用PHP连接Hive Server2

时间:2015-05-26 12:04:42

标签: php hadoop hive

我想使用PHP连接Hive Server2,为此我发现唯一的选项是Apache Thrift

但它仅适用于Hive Server1而不适用于Hive Server2。经过多次搜索后发现,这是因为当您打开传输连接时,节俭服务器希望通过SASL进行身份验证。 Hive Server 2默认使用SASL - 遗憾的是,PHP缺少TSaslClientTransport版本(用作另一个TTransport对象的包装器),它在您打开传输连接时处理SASL协商。

是否有人成功使用php连接hive server2。

1 个答案:

答案 0 :(得分:0)

<?php

    // set THRIFT_ROOT to php directory of the hive distribution
    $GLOBALS['THRIFT_ROOT'] = '/lib/php/';
    // load the required files for connecting to Hive
    require_once $GLOBALS['THRIFT_ROOT'] . 'packages/hive_service/ThriftHive.php';
    require_once $GLOBALS['THRIFT_ROOT'] . 'transport/TSocket.php';
    require_once $GLOBALS['THRIFT_ROOT'] . 'protocol/TBinaryProtocol.php';
    // Set up the transport/protocol/client
    $transport = new TSocket('localhost', 10000);
    $protocol = new TBinaryProtocol($transport);
    $client = new ThriftHiveClient($protocol);
    $transport->open();

    // run queries, metadata calls etc
    $client->execute('SELECT * from src');
    var_dump($client->fetchAll());
    $transport->close();

?>

以下是apache网站上的文档: https://cwiki.apache.org/confluence/display/Hive/HiveClient#HiveClient-PHP