Я хочу подключить Hive Server2 с помощью PHP, и для этого я нашел единственный вариант Apache Thrift имеется в наличии.
Но это работает только для Hive Server1, а не для Hive Server2. После того, как вы нашли больше информации, это связано с тем, что экономичный сервер ожидает аутентификации через SASL, когда вы открываете свое транспортное соединение. Hive Server 2 по умолчанию использует SASL — к сожалению, в PHP отсутствует версия TSaslClientTransport (которая используется в качестве оболочки для другого объекта TTransport), которая обрабатывает согласование SASL при открытии транспортного соединения.
Есть ли кто-нибудь, кому удалось подключиться к hive server2 с помощью php.
<?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
Других решений пока нет …