Некоторое время царапает мне голову. Я просто начинаю использовать PHP/Thrift для общения с HBase (я могу сделать это хорошо с Python). По какой-то причине ниже код производящего класса «HbaseClient» не найден на $ клиента = новой линии:PHP - класс «HbaseClient» не найден, хотя он включен
$GLOBALS['THRIFT_ROOT'] = 'thrift';
require_once($GLOBALS['THRIFT_ROOT'] . '/Thrift.php');
require_once($GLOBALS['THRIFT_ROOT'] . '/transport/TSocket.php');
require_once($GLOBALS['THRIFT_ROOT'] . '/transport/TBufferedTransport.php');
require_once($GLOBALS['THRIFT_ROOT'] . '/protocol/TBinaryProtocol.php');
require_once($GLOBALS['THRIFT_ROOT'] . '/Hbase/Hbase.php');
try
{
$socket = new TSocket('127.0.0.1', 9090);
$transport = new TBufferedTransport($socket, 1024, 1024);
$protocol = new TBinaryProtocolAccelerated($transport);
$client = new HbaseClient($protocol);
$transport->open();
}
catch (Exception $e)
{
echo "Exception: %e\r\n";
}
У меня буквально не знаю, почему. В файле включения Hbase.php клиент определяется как таковой:
class HbaseClient implements \Hbase\HbaseIf {
Я пропустил что-то совершенно простенькое здесь? (Полный HBase.php здесь: http://pastebin.com/6kd9r2Se)
Заранее благодарен!
оба работают, но вместо захвата их пространства имен, как в первом решении, его нужно импортировать: 'use Hbase;' –
@fab whoops, вы правы! – TheMethod
Спасибо, я думаю, что это он. Я также понял, что у меня есть версия бережливости, установленная из того, что я делал вручную, и от менеджера cloudera, поэтому я думаю, что использовал неправильные версии включений. – Geesu