php 配置单元服务器 2 问题
php hiveserver 2 issues
我想从 php 客户端连接到 hiveserver2。但是,我得到一个空白页(我应该在配置单元中看到一个表列表)。我改编了代码
https://github.com/garamon/php-thrift-hive-client。最初,我收到此错误
TSocket: timed out reading 4 bytes from host
。按照此处 的建议实施补丁后。错误消失了,但我什么也没得到。我的代码如下
<?php
$GLOBALS['THRIFT_ROOT'] = dirname(__FILE__) . '/lib';
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';
require_once dirname(__FILE__) . '/ThriftHiveClientEx.php';
$transport = new TSocket('hadoop-gate.iis.u-tokyo.ac.jp', 10000);
$transport->setSendTimeout(600 * 100);
$transport->setRecvTimeout(600 * 100);
$client = new ThriftHiveClientEx(new TBinaryProtocol($transport));
$client->open();
//show tables
$client->execute('SHOW TABLES');
print_r($client);
$tables = $client->fetchAll();
print_r($tables);
foreach ($tables as $name){
echo( " found: {$name}\n" );
}
?>
从cloudera manager检索到的服务器上的错误信息如下所示:
6:49:48.859 PM ERROR org.apache.thrift.server.TThreadPoolServer
Error occurred during processing of message.
java.lang.RuntimeException: org.apache.thrift.transport.TTransportException: Invalid status -128
at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:227)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.thrift.transport.TTransportException: Invalid status -128
at org.apache.thrift.transport.TSaslTransport.sendAndThrowMessage(TSaslTransport.java:230)
at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:184)
at org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125)
at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:262)
at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)
at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)
... 4 more
如有任何帮助,我将不胜感激。非常感谢。
对于那些面临同样问题的人,我通过设置 hive.server2.authentication
解决了这个问题
属性 到 NOSASL
如前所述 here。我无法提前完成它的原因是因为我正在通过转到
服务器上的文件,但没有用,我猜是因为我使用的是 cloudera 发行版。有效的方法是按照 documentation.
中所述在 cloudera 管理器中设置此 属性
我想从 php 客户端连接到 hiveserver2。但是,我得到一个空白页(我应该在配置单元中看到一个表列表)。我改编了代码
https://github.com/garamon/php-thrift-hive-client。最初,我收到此错误
TSocket: timed out reading 4 bytes from host
。按照此处 的建议实施补丁后。错误消失了,但我什么也没得到。我的代码如下
<?php
$GLOBALS['THRIFT_ROOT'] = dirname(__FILE__) . '/lib';
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';
require_once dirname(__FILE__) . '/ThriftHiveClientEx.php';
$transport = new TSocket('hadoop-gate.iis.u-tokyo.ac.jp', 10000);
$transport->setSendTimeout(600 * 100);
$transport->setRecvTimeout(600 * 100);
$client = new ThriftHiveClientEx(new TBinaryProtocol($transport));
$client->open();
//show tables
$client->execute('SHOW TABLES');
print_r($client);
$tables = $client->fetchAll();
print_r($tables);
foreach ($tables as $name){
echo( " found: {$name}\n" );
}
?>
从cloudera manager检索到的服务器上的错误信息如下所示:
6:49:48.859 PM ERROR org.apache.thrift.server.TThreadPoolServer
Error occurred during processing of message.
java.lang.RuntimeException: org.apache.thrift.transport.TTransportException: Invalid status -128
at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:227)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.thrift.transport.TTransportException: Invalid status -128
at org.apache.thrift.transport.TSaslTransport.sendAndThrowMessage(TSaslTransport.java:230)
at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:184)
at org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125)
at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:262)
at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)
at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)
... 4 more
如有任何帮助,我将不胜感激。非常感谢。
对于那些面临同样问题的人,我通过设置 hive.server2.authentication
解决了这个问题
属性 到 NOSASL
如前所述 here。我无法提前完成它的原因是因为我正在通过转到
服务器上的文件,但没有用,我猜是因为我使用的是 cloudera 发行版。有效的方法是按照 documentation.