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

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

原 荐 在 <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库

没有更多内容

加载失败,请刷新页面

加载更多

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

查看所有标签

猜你喜欢:

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

C++标准库(第2版)

C++标准库(第2版)

Nicolai M. Josuttis / 侯捷 / 电子工业出版社 / 2015-6 / 186.00元

《C++标准库(第2版)》是全球C++经典权威参考书籍时隔12年,基于C++11标准的全新重大升级。标准库提供了一组公共类和接口,极大地拓展了C++语言核心功能。《C++标准库(第2版)》详细讲解了每一标准库组件,包括其设计目的和方法、复杂概念的剖析、实用而高效的编程细节、存在的陷阱、重要的类和函数,又辅以大量用C++11标准实现的实用代码范例。除覆盖全新组件、特性外,《C++标准库(第2版)》一......一起来看看 《C++标准库(第2版)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

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

正则表达式在线测试