原 荐 在php的yii2框架中整合hbase库

栏目: PHP · 发布时间: 7年前

原 荐 在 <a href='https://www.codercto.com/topics/18749.html'>php</a> 的yii2框架中整合hbase库

在php的yii2框架中整合hbase库

  penngo 发布于 今天 16:59

字数 592

阅读 3

收藏 0

PHP Yii Apache HBase Thrift

开源中国十周年庆:开源众包怎么做我说了算!参与赢终身免费大奖 >>> 原 荐 在php的yii2框架中整合hbase库

Hbase通过thrift这个跨语言的RPC框架提供多语言的调用。

Hbase有两套thrift接口(thrift1和thrift2),但是它们并不兼容。根据官方文档,thrift1很可能被抛弃,本文以thrift2整合为例。

1、访问官网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相关库,保存在D:\project\thrift\thrift-0.11.0)

2、访问hbase官网(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文件夹同时存在thrift和thrift2接口描述文件,本文只使用thrift2

在D:\project\thrift目录中输入cmd命令,生成对应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、要通过thrifc调用hbase,需要先启动hbase的接口服务

$HBASE_HOME/bin/hbase-daemon.sh start thrift2  //启动
$HBASE_HOME/bin/hbase-daemon.sh stop thrift2   //停止

5、与yii2整合

在vendor文件夹中新建hbase目录

vendor\hbase\gen-php  //复制D:\project\thrift\gen-php
vendor\hbase\php      //复制D:\project\thrift\thrift-0.11.0\lib\php

由于thrift2的php不使用Composer,类库命名方式也不完全符合PSR-4标准, 所以本文使用include_path方式来定位并导入类文件。

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();
    }
}

© 著作权归作者所有

共有人打赏支持

原 荐 在php的yii2框架中整合hbase库

penngo

粉丝 76

博文 99

码字总数 55704

作品 2

广州

程序员

相关文章 最新文章

R语言与Hadoop和Hbase的联合使用

HBase和rhbase的安装与使用,分为3个章节。 1. 环境准备及HBase安装2. rhbase安装3. rhbase程序用例 每一章节,都会分为”文字说明部分”和”代码部分”,保持文字说明与代码的连贯性。 注:...

openthings

2015/07/02

0

0

使用hive读取hbase数据

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 sql 查询功能,可以将sql语句转换为 MapReduce任务进行运行。 其优点是学习成本低,可以通过类...

凡16

2013/12/13

0

0

hive 与 hbase 结合

一、hive与hbase的结合 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要。使用Hive读取Hbase中的数据,可以使用HQL语句在HBase表上进行查询、插入操作;甚...

meteor_hy

06/26

0

0

手把手教你通过Thrift 访问ApsaraDB for HBase

Thrift 多语言接入 Thrift 提供多语言访问HBase的能力,支持的语言包从Thrift官网看括: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk,......

玄陵

08/03

0

0

原 荐 在php的yii2框架中整合hbase库
hive与hbase数据交互的详解指南 | ApacheCN(apache中文网)

HBase和Hive的集成原理 ApacheCN | apache中文网 Hive和Hbase有各自不同的特征:hive是高延迟、结构化和面向分析的,hbase是低延迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高延迟...

片刻

2014/06/28

0

0

没有更多内容

加载失败,请刷新页面

加载更多
红黑树

在看jdk的HashMap的代码的时候,看到了jdk8的实现方式用到了红黑树,然后,就看了一下。 废话少讲,开始红黑树的简介。 红黑树的特性 1.每个节点或者是黑色,或者是红色。 2.根节点是黑色。 ...

无知的小狼

15分钟前

1

0

jvisualvm远程监控 visualgc插件 不受此jvm支持问题

问题描述:VisualVM连接远程服务器有两种方式:JMX和jstatd,两种方式都不能完美支持所有功能,例如JMX不支持VisualGC,jstatd不支持CPU监控,实际使用可同时配置上并按需选用。 下面介绍如何...

飓风2000

19分钟前

1

0

nginx 多域名 配置

#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1......

mellen

21分钟前

2

0

AngularDart Material Design 进度条

MaterialProgressComponent Selector: <material-progress> 进度条适用于可以确定完成百分比的情况。 它们使用户能够快速了解操作需要多长时间。 Inputs: activeProgress int 当前进度值。 ...

scooplol

25分钟前

1

0

普通 java 项目打jar包运行

1.新建一个java项目,必须有main方法,sys的打印目录重定向到到外部文件 public class Main {public static void main(String[] args) throws FileNotFoundException {File test =...

消散了的诗意

28分钟前

1

0

原 荐 在php的yii2框架中整合hbase库

没有更多内容

加载失败,请刷新页面

加载更多

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Numerical Recipes 3rd Edition

Numerical Recipes 3rd Edition

William H. Press、Saul A. Teukolsky、William T. Vetterling、Brian P. Flannery / Cambridge University Press / 2007-9-6 / GBP 64.99

Do you want easy access to the latest methods in scientific computing? This greatly expanded third edition of Numerical Recipes has it, with wider coverage than ever before, many new, expanded and upd......一起来看看 《Numerical Recipes 3rd Edition》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试