前一段时间需要在网页上显示HBASE查询的结果,考虑用PHP来实现,在网上搜了一下,普遍都是用thrift作为接口来实现的。​

参考博文:​

http://www.cnblogs.com/scotoma/archive/2013/05/16/3081236.html

用上述网址里提供的PHP代码,可以访问公司里的一个HBASE集群,但是另一个集群怎么也访问不了,上网查了一下,发现thrift有两套HBASE的接口--thrift和thrift2,而且两套接口并不兼容。

用thrift2的接口替换了上述网址里的thrift接口,另外一个HBASE集群就也可以访问了。

thrift2接口PHP文件

http://yunpan.cn/cwSDFaSPuWYIN  访问密码 fd38

http://yunpan.cn/cwSUnCGrsiwyy  访问密码 c5b8

其中包含两个文件​:Hbase_types.php和THBaseService.php,

Hbase_types.php中定义了接口中使用的变量的类型

THBaseService.php中则定义了各种访问HBASE的接口

thrift和thrift2接口的差异较大,可参见以下博文

http://blog.csdn.net/guxch/article/details/12163047

遗憾的是上述博文并没有使用thrift2接口的具体例子,导致我在使用这些接口的时候也碰了不少钉子。

下面列出一些thrift2访问HBASE的PHP代码,以供参考,不妥的地方敬请指正:

 <?php
/***
Thrift Test */ ini_set('display_error', E_ALL); $GLOBALS['THRIFT_ROOT'] = './lib/php/src'; /* Dependencies. In the proper order. */
require_once $GLOBALS['THRIFT_ROOT'].'/Thrift.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';
require_once $GLOBALS['THRIFT_ROOT'].'/packages/Hbase/THBaseService.php'; //define host and port
$host = 'xxx.xxx.xxx.xxx';
$port = 9090; $socket = new TSocket($host, $port);
$transport = new TBufferedTransport($socket);
$protocol = new TBinaryProtocol($transport); // Create a client
$client = new THBaseServiceClient($protocol);
$transport->open(); //HOW TO GET
$tableName = "test_table"; $column_1 = new TColumn();
$column_1->family = 'cf1';
$column_1->qualifier = 'q1'; $column_2 = new TColumn();
$column_2->family = 'cf1';
$column_2->qualifier = 'q2'; $columnArray = array($column_1, $column_2); $get = new TGet();
$get->row = 'a';
$get->columns = $columnArray; $arr = $client->get($tableName, $get); $results = $arr->columnValues;
foreach($results as $result)
{
$qualifier = (string)$result->qualifier;
$value = $result->value;
print_r($qualifier);
print_r($value);
} //HOW TO SCAN
$scan = new TScan();
$scan->startRow = 'a';
$scan->stopRow = 'z';
$scan->columns = $columnArray;
$num = 1000;
$scanRets = $client->getScannerRows($scanId, $num); foreach($scanRets as $scanRet)
{
$scan_row = $scanRet->row;
$scan_cols = $scanRet->columnValues;
print_r($scan_row);
print_r($scan_cols);
} $client->closeScanner($scanId);
$transport->close();*/ ?>

PHP通过thrift2访问HBASE的更多相关文章

  1. PHP和Golang使用Thrift1和Thrift2访问Hbase0.96.2(ubuntu12.04)

    目录: 一.Thrift1和Thrift2的简要介绍 1) 写在前面 2) Thrift1和Thrift2的区别  二.Thrift0.9.2的安装 1) 安装依赖插件 2) Thrift0.9.2的 ...

  2. 使用C#通过Thrift访问HBase

    前言 因为项目需要要为客户程序提供C#.Net的HBase访问接口,而HBase并没有提供原生的.Net客户端接口,可以通过启动HBase的Thrift服务来提供多语言支持. Thrift介绍 环境 ...

  3. 使用C#和Thrift来访问Hbase实例

    今天试着用C#和Thrift来访问Hbase,主要参考了博客园上的这篇文章.查了Thrift,Hbase的资料,结合博客园的这篇文章,终于搞好了.期间经历了不少弯路,下面我尽量详细的记录下来,免得大家 ...

  4. windows平台下用C#访问HBase

    Hadoop中的HBase有多种数据访问方式,ubuntu里可以用hbase shell查看操作hbase数据库,但windows平台下需要用thrift对它进行访问. 例如hadoop安装在/usr ...

  5. HBase(二): c#访问HBase之股票行情Demo

    上一章完成了c#访问hbase的sdk封装,接下来以一个具体Demo对sdk进行测试验证.场景:每5秒抓取指定股票列表的实时价格波动行情,数据下载后,一方面实时刷新UI界面,另一方面将数据放入到在内存 ...

  6. HBase(一): c#访问hbase组件开发

    HDP2.4安装系列介绍了通过ambari创建hbase集群的过程,但工作中一直采用.net的技术路线,如何去访问基于Java搞的Hbase呢? Hbase提供基于Java的本地API访问,同时扩展了 ...

  7. Pyspark访问Hbase

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/7347167.html 转载请注明出处 记录自己最近抽空折腾虚拟机环境时用spark2.0的pyspark ...

  8. JAVA API访问Hbase org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=32

    Java使用API访问Hbase报错: 我的hbase主节点是spark1   java代码访问hbase的时候写的是ip 结果运行程序报错 不能够识别主机名 修改主机名     修改主机hosts文 ...

  9. Java访问Hbase

    1.kerberos验证 a.下载对应版本JCE(Java Cryptography Extension),解压拷贝local_policy.jar/US_export_policy.jar到$JAV ...

随机推荐

  1. mac 命令行下 vim 的使用

    vi/vim 使用实例 使用 vi 来建立名为 test.txt 的文件 vi test.txt1按下 ESC 按钮回到一般模式 在一般模式中按下 :wq 储存后离开 vi 基本上 vi/vim 共分 ...

  2. crontab定时任务打包备份文件并删除过期文件

    Crontab 示例,最后这里要写成shell脚本定时运行 30 17 * * * cp -rf /usr/local/tomcat9-jforum/tomcat/logs/catalina.out ...

  3. linux常用命令和字符串乱码

    top :动态实时显示cpu.内存.进程等使用情况(类似windows下的任务管理器) ps aux 查看所有进程 ps aux|grep java 查看java进程 kill -9 进程号 :强制杀 ...

  4. js判断Android和Ios

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  5. Vue 嵌套路由使用总结

    Vue 嵌套路由使用总结   by:授客 QQ:1033553122   开发环境   Win 10   node-v10.15.3-x64.msi 下载地址: https://nodejs.org/ ...

  6. 实用 docker history

    关闭安装认证, 开启tcp 端口 sudo vi /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --insecur ...

  7. lua学习,笔者自用

    标识符与关键字A:常量用全大写和下划线,eg: My_ACCOUNTB: 变量的第一个字母小写,eg: strNumberC: 全局变量第一个字母用小写g表示,eg: gMyAcountD: 函数名第 ...

  8. 【网站】i新媒上线了!

    [New]i新媒上线了! i新媒,是新媒体人常用和必备的工具导航,我们整合了自媒体平台.行业资讯.运营营销.学习创业等常用的网站,让新媒体人更快地获取有用的知识. 访问链接:https://ixm.h ...

  9. [CF1234F] Yet Another Substring Reverse - 字符串,状压DP

    CF1234F Yet Another Substring Reverse Description 给定一个字符串,可以任意翻转一个子串,求最终满足所有字符互不相同的子串的最大长度. 数据范围: \( ...

  10. linux 扩展内存

    一.逻辑卷创建使用 https://www.cnblogs.com/xiaoluo501395377/archive/2013/05/24/3096087.html fdisk -l pvcreate ...