[HADOOP] PHP의 Hive / Thrift를 통한 데이터베이스 쿼리가 작동하지 않습니다.
HADOOPPHP의 Hive / Thrift를 통한 데이터베이스 쿼리가 작동하지 않습니다.
PHP에서 Hive / Thrift를 통해 데이터베이스를 쿼리하려고합니다. 그러나 나는 끊임없이 오류가 발생한다 :
TSocket: timed out reading 4 bytes from XYZ
나는에서 코드를 사용하고 있습니다.
https://cwiki.apache.org/Hive/hiveclient.html#HiveClient-PHP
이 PHP Thrift 클라이언트와 함께
https://github.com/garamon/php-thrift-hive-client
내 코드 :
<?php
$socket = new TSocket( 'XYZ', 12345 );
$socket->setSendTimeout(30 * 1000);
$socket->setRecvTimeout(30 * 1000);
$transport = new TBufferedTransport( $socket, 1024, 1024 );
$protocol = new TBinaryProtocol( $transport );
$client = new ThriftHiveClientEx( $protocol );
$transport->open();
$client->execute("my query");
?>
주 - 콘솔 (telnet 명령)을 통해 XYZ에 연결할 수 있습니다.
나는 어떤 도움을 주셔서 감사합니다. 감사.
해결법
-
==============================
1.나는 똑같은 자원으로 시작할 때 비슷한 문제가 있었다. 코드가 시간 초과되었거나 포트를 차단하는지 여부를 인식하지 못하는 것으로 나타났습니다. 나는이 기사를 찾았고 나를 도왔다.
나는 똑같은 자원으로 시작할 때 비슷한 문제가 있었다. 코드가 시간 초과되었거나 포트를 차단하는지 여부를 인식하지 못하는 것으로 나타났습니다. 나는이 기사를 찾았고 나를 도왔다.
https://issues.apache.org/jira/browse/THRIFT-347
TSocket.php 코드 (garamon_base_dir / lib / transport)에서 대략 223 행에서 236 행을 편집해야합니다.
그것이 말하는 곳 :
if( $buf === FALSE || $buf === '' ) { ... and if( $md['timed_out'] ) { ... and then again if( $md[timed_out'] ) { ...
(각각)로 변경하십시오.
if( $buf === FALSE ) { ... and if( true === $md['timed_out'] && false === $md['blocked'] ) and finally if( true === $md['timed_out'] && false === $md['blocked'] )
그런 다음이 수정 작업을 시작했습니다. 행운을 빕니다!
from https://stackoverflow.com/questions/17524076/querying-database-through-hive-thrift-in-php-does-not-work by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하이브 : 큰 테이블에서 작은 테이블 만들기 (0) | 2019.07.28 |
---|---|
[HADOOP] 실행중인 응용 프로그램에서 사용되는 컨테이너 및 VC 수를 가져 오는 YARN 셸 명령 (0) | 2019.07.28 |
[HADOOP] 하이브에서 'InputFormat, OutputFormat'및 'Saveed as'의 차이점 (0) | 2019.07.28 |
[HADOOP] 실행시 hadoop 페이지 랭크 오류 (0) | 2019.07.28 |
[HADOOP] Hadoop 2.5.0에서 실행중인 데이터 노드 데몬 (0) | 2019.07.28 |