PHP通过thrift2访问HBASE

前一段时间需要在网页上显示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代码,以供参考,不妥的地方敬请指正:

 1 <?php
 2 /***
 3 Thrift Test
 4
 5 */
 6
 7 ini_set(‘display_error‘, E_ALL);
 8
 9 $GLOBALS[‘THRIFT_ROOT‘] = ‘./lib/php/src‘;
10
11 /* Dependencies. In the proper order. */
12 require_once $GLOBALS[‘THRIFT_ROOT‘].‘/Thrift.php‘;
13 require_once $GLOBALS[‘THRIFT_ROOT‘].‘/transport/TSocket.php‘;
14 require_once $GLOBALS[‘THRIFT_ROOT‘].‘/protocol/TBinaryProtocol.php‘;
15 require_once $GLOBALS[‘THRIFT_ROOT‘].‘/transport/TBufferedTransport.php‘;
16 require_once $GLOBALS[‘THRIFT_ROOT‘].‘/packages/Hbase/THBaseService.php‘;
17
18 //define host and port
19 $host = ‘xxx.xxx.xxx.xxx‘;
20 $port = 9090;
21
22 $socket = new TSocket($host, $port);
23 $transport = new TBufferedTransport($socket);
24 $protocol = new TBinaryProtocol($transport);
25
26 // Create a client
27 $client = new THBaseServiceClient($protocol);
28 $transport->open();
29
30 //HOW TO GET
31 $tableName = "test_table";
32
33 $column_1 = new TColumn();
34 $column_1->family = ‘cf1‘;
35 $column_1->qualifier = ‘q1‘;
36
37 $column_2 = new TColumn();
38 $column_2->family = ‘cf1‘;
39 $column_2->qualifier = ‘q2‘;
40
41 $columnArray = array($column_1, $column_2);
42
43 $get = new TGet();
44 $get->row = ‘a‘;
45 $get->columns = $columnArray;
46
47 $arr = $client->get($tableName, $get);
48
49 $results = $arr->columnValues;
50 foreach($results as $result)
51 {
52     $qualifier = (string)$result->qualifier;
53     $value = $result->value;
54     print_r($qualifier);
55     print_r($value);
56 }
57
58 //HOW TO SCAN
59 $scan = new TScan();
60 $scan->startRow = ‘a‘;
61 $scan->stopRow = ‘z‘;
62 $scan->columns = $columnArray;
63 $num = 1000;
64 $scanRets = $client->getScannerRows($scanId, $num);
65
66 foreach($scanRets as $scanRet)
67 {
68   $scan_row = $scanRet->row;
69   $scan_cols = $scanRet->columnValues;
70   print_r($scan_row);
71   print_r($scan_cols);
72 }
73
74 $client->closeScanner($scanId);
75 $transport->close();*/
76
77 ?>
时间: 2024-10-13 15:44:58

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

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

目录: 一.Thrift1和Thrift2的简要介绍 1) 写在前面 2) Thrift1和Thrift2的区别  二.Thrift0.9.2的安装 1) 安装依赖插件 2) Thrift0.9.2的编译  3) Thrift0.9.2编译后,配置成可执行文件 三.Hbase0.96.2的安装 1) Hbase的介绍 2) Hbase的安装 3) Hbase基于源码的Thrift生成接口文件 四.PHP和Golang使用Thrift1和Thrift2访问Hbase 1) PHP基于Thrift1

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

上一章完成了c#访问hbase的sdk封装,接下来以一个具体Demo对sdk进行测试验证.场景:每5秒抓取指定股票列表的实时价格波动行情,数据下载后,一方面实时刷新UI界面,另一方面将数据放入到在内存中模拟的MQ (实际生产情况,可用kafka等集群代替)->存入HBase数据库.提供按指定时间范围股票价格数据查询. 目录: 示例说明 示例效果图 rest server运行状态检查 获取股票实时数据代码 数据持续化至Hbase代码 从HBase读取数据代码 示例说明: 在Hbase 中创建两个表

HiveServer2中使用jdbc访问hbase时导致ZooKeeper连接持续增加的解决

最近在监控中发现HiveServer2连接到zookeeper里的连接持续上涨,很奇怪,虽然知道HiveServer2支持并发连接,使用ZooKeeper来管理Hive表的读写锁,但我们的环境并不需要这些,我们已经关闭并发功能,以下是线上的配置,甚至把这些值都改成final了. 但是zookeeper连接依然会涨.后来想想,我们要访问的表是hive去映射的hbase,hiveserver2什么时候去连接zookeeper,它连接zookeeper干么,先从日志下手,将线上日志级别改为了debug

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

1.开启Hbase的Thrift服务 在Hbase的master上运行:hbase-daemon.sh start thrift -threadpool 1.下载Thrift 0.7.0的源码和代码生成工具(姑且这么叫) 从上面提供的Thrift下载页面中的目录里分别下载代码生成工具: thrift-0.7.0.exe 和Thrift源代码: thrift-0.7.0.tar.gz 2.编译Thrift 用VS2012新建一个解决方案,然后再在解决方案中新建一个类库的项目,我起名叫thrift-

Java访问Hbase

1.kerberos验证 a.下载对应版本JCE(Java Cryptography Extension),解压拷贝local_policy.jar/US_export_policy.jar到$JAVA_HOME//jre/lib/security b.在resource即classes路径下添加hbase-site.xml <configuration> <!-- 访问的hbase集群的名字 --> <property> <name>hbase.clust

使用happybase访问HBase出现Broken pipe问题---两个“惊天”大bug

来源使用happybase通过thrift接口向HBase读取.写入数据时,出现Broken pipe的错误.排查步骤: 1.查看hbase的日志: Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release 17/05/12 18:08:41 INFO util.VersionInfo: HBase 1.

spark访问hbase

import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor} import org.apache.hadoop.hbase.mapreduce.TableInputFormat import org.apache.spark.rdd.NewHadoopRDD val conf = HBaseConfiguration.create() conf.set(TableInputFormat.INPUT_TABLE, "tm

spring hadoop 访问hbase入门

1.  环境准备: Maven Eclipse Java Spring 版本 3..2.9 2. Maven  pom.xml配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!-- Spring hadoop  -->                    <dependency>             <groupId>org.apache.hbase</groupId>             <artifa

Java代码访问Hbase测试

import java.io.IOException;import java.util.Iterator;import java.util.List;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.CellUtil;import org.apache.hadoop.hbase.HBaseConfiguration;impor