在php的yii2框架中整合hbase庫(kù)的方法
Hbase通過(guò)thrift這個(gè)跨語(yǔ)言的RPC框架提供多語(yǔ)言的調(diào)用。
Hbase有兩套thrift接口(thrift1和thrift2),但是它們并不兼容。根據(jù)官方文檔,thrift1很可能被拋棄,本文以thrift2整合為例。
1、訪問(wèn)官網(wǎng)http://thrift.apache.org/download,下載
thrift-0.11.0.exe (生成接口rpc工具,thrift-0.11.0.exe改名thrift.exe,保存在D:\project\thrift\thrift.exe)
thrift-0.11.0.tar.gz(thrift相關(guān)庫(kù),保存在D:\project\thrift\thrift-0.11.0)
2、訪問(wèn)hbase官網(wǎng)(http://archive.apache.org/dist/hbase/),下載hbase-1.2.6-src.tar.gz
解壓保存在D:\project\thrift\hbase-1.2.6
3、生成php接口代碼
解壓hbase-1.2.6-src.tar.gz,hbase-1.2.6\hbase-thrift\src\main\resources\org\apache\hadoop\hbase文件夾同時(shí)存在thrift和thrift2接口描述文件,本文只使用thrift2
在D:\project\thrift目錄中輸入cmd命令,生成對(duì)應(yīng)php的sdk文件。
thrift -gen php hbase-1.2.6\hbase-thrift\src\main\resources\org\apache\hadoop\hbase\thrift2\hbase.thrift
生成的D:\project\thrift\gen-php目錄包含文件:
THBaseService.php Types.php
4、要通過(guò)thrifc調(diào)用hbase,需要先啟動(dòng)hbase的接口服務(wù)
$HBASE_HOME/bin/hbase-daemon.sh start thrift2 //啟動(dòng) $HBASE_HOME/bin/hbase-daemon.sh stop thrift2 //停止
5、與yii2整合
在vendor文件夾中新建hbase目錄
vendor\hbase\gen-php //復(fù)制D:\project\thrift\gen-php vendor\hbase\php //復(fù)制D:\project\thrift\thrift-0.11.0\lib\php
由于thrift2的php不使用Composer,類庫(kù)命名方式也不完全符合PSR-4標(biāo)準(zhǔn), 所以本文使用include_path方式來(lái)定位并導(dǎo)入類文件。
common\models\HArticle.php
<?php namespace common\models; require_once dirname(dirname(__DIR__)).'/vendor/hbase/php/lib/Thrift/ClassLoader/ThriftClassLoader.php'; use Thrift\ClassLoader\ThriftClassLoader; $loader = new ThriftClassLoader(); $loader->registerNamespace('Thrift', dirname(dirname(__DIR__)) . '/vendor/hbase/php/lib'); $loader->register(); require_once dirname(dirname(__DIR__)) . '/vendor/hbase/gen-php/Types.php'; require_once dirname(dirname(__DIR__)) . '/vendor/hbase/gen-php/THBaseService.php'; use Thrift\Protocol\TBinaryProtocol; use Thrift\Transport\TSocket; use Thrift\Transport\TBufferedTransport; use THBaseServiceClient; use TGet; class HArticle { private $host = '192.168.1.108'; private $port = 9090; public function get($rowKey){ $socket = new TSocket($this->host, $this->port); $transport = new TBufferedTransport($socket); $protocol = new TBinaryProtocol($transport); $client = new THBaseServiceClient($protocol); $transport->open(); $tableName = "article_2018"; $get = new TGet(); $get->row = $rowKey; $arr = $client->get($tableName, $get); $data = array(); $results = $arr->columnValues; foreach($results as $result) { $qualifier = (string)$result->qualifier; $value = $result->value; $data[$qualifier] = $value; } $transport->close(); return $data; } }
frontend\controllers\TestController.php
<?php namespace frontend\controllers; use yii\web\Controller; use common\models\HArticle; class TestController extends Controller { public function actionIndex() { $hArticle = new HArticle(); $data = $hbaseNews->get('20180908_1f1be3cd26a36e351175015f450fa3f6'); var_dump($data); exit(); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PHP用mb_string函數(shù)庫(kù)處理與windows相關(guān)中文字符及Win環(huán)境下開(kāi)啟PHP Mb_String方法
昨天想批處理以前下載的一堆文件,把文件里的關(guān)鍵內(nèi)容用正則匹配出來(lái),集中處理。在操作文件時(shí)遇到一個(gè)問(wèn)題,就是windows操作系統(tǒng)中的編碼問(wèn)題.2015-11-11ThinkPHP驗(yàn)證碼和分頁(yè)實(shí)例教程
這篇文章主要介紹了ThinkPHP驗(yàn)證碼和分頁(yè)實(shí)例教程,是ThinkPHP中常見(jiàn)的應(yīng)用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-08-08php實(shí)現(xiàn)文本數(shù)據(jù)導(dǎo)入SQL SERVER
php將文本文件導(dǎo)入mysql我們經(jīng)常遇到,但是如果是導(dǎo)入到sqlserver又應(yīng)該如何操作呢,下面就給大家分享一下本人的操作方法,感覺(jué)效率還不錯(cuò),這里推薦給大家。2015-05-05PHP頁(yè)面輸出搜索后跳轉(zhuǎn)下一頁(yè)的處理方法
這篇文章主要介紹了PHP頁(yè)面輸出搜索后跳轉(zhuǎn)下一頁(yè)的處理方法,用js來(lái)給url加上搜索的條件,保證跳轉(zhuǎn)下一頁(yè)時(shí)輸出的是搜索到的數(shù)據(jù),對(duì)實(shí)現(xiàn)代碼感興趣的朋友可以參考下本文2016-09-09TP(thinkPHP)框架多層控制器和多級(jí)控制器的使用示例
這篇文章主要介紹了TP(thinkPHP)框架多層控制器和多級(jí)控制器的使用,結(jié)合實(shí)例形式分析了thinkPHP框架多層控制器和多級(jí)控制器的結(jié)構(gòu)、原理及使用方法,需要的朋友可以參考下2018-06-06php while循環(huán)得到循環(huán)次數(shù)
在for循環(huán)中,我們很容易得到循環(huán)次數(shù),因?yàn)槭亲鳛闂l件出現(xiàn)的。在while也可以得到,如下:2013-10-10php 微信公眾平臺(tái)開(kāi)發(fā)模式實(shí)現(xiàn)多客服的實(shí)例代碼
這篇文章主要介紹了php 微信公眾平臺(tái)開(kāi)發(fā)模式實(shí)現(xiàn)多客服的實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-11-11PHP通過(guò)反射動(dòng)態(tài)加載第三方類和獲得類源碼的實(shí)例
這篇文章主要介紹了PHP通過(guò)反射動(dòng)態(tài)加載第三方類和獲得類源碼的方法,一般在解析XML文件時(shí)會(huì)用到,需要的朋友可以參考下2015-11-11