我想使用PHP连接Hive Server2,为此我发现唯一的选项是Apache Thrift。
但它仅适用于Hive Server1而不适用于Hive Server2。经过多次搜索后发现,这是因为当您打开传输连接时,节俭服务器希望通过SASL进行身份验证。 Hive Server 2默认使用SASL - 遗憾的是,PHP缺少TSaslClientTransport版本(用作另一个TTransport对象的包装器),它在您打开传输连接时处理SASL协商。
是否有人成功使用php连接hive server2。
答案 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