php通过thrift开发hive
概述: 由于hadoop和hive都是用java写的,要使用像php这样的脚本语言(实际上thrift支持的语言还有很多,大部分主流语言都包括)对hive进行开发就需要一个跨语言的连接桥梁,到目前为止,我所知道的有两种方法可以实现: 1.后面将具体说明的Thrift Thrift是F
概述:
由于hadoop和hive都是用java写的,要使用像php这样的脚本语言(实际上thrift支持的语言还有很多,大部分主流语言都包括)对hive进行开发就需要一个跨语言的连接桥梁,到目前为止,我所知道的有两种方法可以实现:
1.后面将具体说明的Thrift
Thrift是Facebook的一个开源项目,同时也是hadoop和hive官网上提到一种中间件,本次开发就是使用Thrift
2.php java bridge(这个没有用过,不太了解)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面主要总结一些thrift相关的东西
安装:
在安装好hadoop,hive并且以mysql作为hive的元数据库配置完成的前提下
1.下载thrift(apache thrift官网)
2.解压:tar -zxvf 压缩包名
3.安装依赖库:libevent和libevent-devel
4.在thrift路径下执行:./configure【具体见./configure --help】;然后make & make install
具体说明可以查看官网信息:http://thrift.apache.org/
使用:
thrift目录下有packages、protocol、server、transport几个文件夹,并且提供了以下几个操作hive的函数:
interface ThriftHiveIf extends ThriftHiveMetastoreIf { public function execute($query);//执行$query public function fetchOne();//获取一条结果 public function fetchN($numRows);//获取$numRows条结果 public function fetchAll();//获取所有结果 public function getSchema();//获取元数据 public function getThriftSchema();//没试过 public function getClusterStatus();//获取集群状态 public function getQueryPlan();//获取执行计划 }
调用的时候在php文件加上以下内容:
$GLOBALS['THRIFT_ROOT'] = 'Thrift/'; //thrift根目录 // 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(host_ip, 10000); $protocol = new TBinaryProtocol($transport); $client = new ThriftHiveClient($protocol); $transport->open();
1.获取数据库:
$client->execute("show databases"); $result = $client->fetchAll();//$result接收执行结果
2.获取元数据:
要获取hive的元数据是通过getSchema()函数,它是要配合某一个查询的执行进行获取,例子如下:
$client->execute("select id from hivetest");//hivetest表中只有id、name两个字段分别为int和string类型 $schema = $client->getSchema(); $result = $client->fetchAll();
打印的$schema的值为:
metastore_Schema Object (
[fieldSchemas] => Array (
[0] => metastore_FieldSchema Object (
[name] => id
[type] => int
[comment] => )
)
[properties] =>
)
要获取其中的数据可以通过下面这个函数对$schema 进行转化:
function objtoarr($obj){ $ret = array(); foreach($obj as $key =>$value){ if(gettype($value) == 'array' || gettype($value) == 'object'){ $ret[$key] = objtoarr($value); } else{ $ret[$key] = $value; } } return $ret; }

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.
