在这一段时间里我一直在挠头。我刚开始使用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 {
我在这里丢失了一些非常简单的东西吗? (Full HBase.php here:http://pastebin.com/6kd9r2Se)
在此先感谢!
上启用的错误报告的级别,但这两种方式都可以工作,但不像第一种解决方案那样劫持它们的命名空间,而应该导入它:'use Hbase;' – 2013-03-11 16:18:52
@fab whoops,你是对的! – TheMethod 2013-03-11 16:37:02
谢谢,我认为这是它。我也意识到,我有一个从手动安装的节俭版本,并从cloudera经理,所以我认为我也使用错误版本的包装。 – Geesu 2013-03-11 16:53:02