hbase之python利用thrift操作hbase数据和shell操作

前沿:

以前都是用mongodb的,但是量大了,mongodb显得不那么靠谱,改成hbase撑起一个量级。

HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型的数据。HBase是一个开源的,分布式的,多版本的,面向列的存储模型。它存储的是松散型数据。

HBase提供了丰富的访问接口。

HBase Shell
Java clietn API
Jython、Groovy DSL、Scala
REST
Thrift(Ruby、Python、Perl、C++…)
MapReduce
Hive/Pig

hbase(main):001:0>

#创建表

hbase(main):002:0* create ‘blog‘,‘info‘,‘content‘

0 row(s) in 2.0290 seconds

#查看表

hbase(main):003:0> list

TABLE

blog

test_standalone

2 row(s) in 0.0270 seconds

#增添数据

hbase(main):004:0> put ‘blog‘,‘1‘,‘info:editor‘,‘liudehua‘

0 row(s) in 0.1340 seconds

hbase(main):005:0> put ‘blog‘,‘1‘,‘info:address‘,‘bj‘

0 row(s) in 0.0070 seconds

hbase(main):006:0> put ‘blog‘,‘1‘,‘content:header‘,‘this is header‘

0 row(s) in 0.0070 seconds

hbase(main):007:0>

hbase(main):008:0*

hbase(main):009:0* get ‘blog‘,‘1‘

COLUMN                CELL

content:header       timestamp=1407464302384, value=this is header

info:address         timestamp=1407464281942, value=bj

info:editor          timestamp=1407464270098, value=liudehua

3 row(s) in 0.0360 seconds

hbase(main):010:0> get ‘blog‘,‘1‘,‘info‘

COLUMN                                                 CELL

info:address                                          timestamp=1407464281942, value=bj

info:editor                                           timestamp=1407464270098, value=liudehua

2 row(s) in 0.0120 seconds

#这里是可以按照条件查询的。

hbase(main):012:0* scan ‘blog‘

ROW                                                    COLUMN+CELL

1                                                     column=content:header, timestamp=1407464302384, value=this is header

1                                                     column=info:address, timestamp=1407464281942, value=bj

1                                                     column=info:editor, timestamp=1407464270098, value=liudehua

1 row(s) in 0.0490 seconds

hbase(main):013:0>

hbase(main):014:0* put ‘blog‘,‘1‘,‘content:header‘,‘this is header2‘

0 row(s) in 0.0080 seconds

hbase(main):015:0>

hbase(main):016:0*

hbase(main):017:0* put ‘blog‘,‘1‘,‘content:header‘,‘this is header3‘

0 row(s) in 0.0050 seconds

hbase(main):018:0> scan ‘blog‘

ROW                                                    COLUMN+CELL

1                                                     column=content:header, timestamp=1407464457128, value=this is header3

1                                                     column=info:address, timestamp=1407464281942, value=bj

1                                                     column=info:editor, timestamp=1407464270098, value=liudehua

1 row(s) in 0.0180 seconds

hbase(main):020:0> get ‘blog‘,‘1‘,‘content:header‘

COLUMN                                                 CELL

content:header                                        timestamp=1407464457128, value=this is header3

1 row(s) in 0.0090 seconds

hbase(main):021:0>

原文:http://rfyiamcool.blog.51cto.com/1030776/1537505

#可以看到历史版本记录

hbase(main):022:0* get ‘blog‘,‘1‘,{COLUMN => ‘content:header‘,VERSIONS => 2}

COLUMN                                                 CELL

content:header                                        timestamp=1407464457128, value=this is header3

content:header                                        timestamp=1407464454648, value=this is header2

2 row(s) in 0.0100 seconds

#可以看到历史版本记录

hbase(main):023:0> get ‘blog‘,‘1‘,{COLUMN => ‘content:header‘,VERSIONS => 3}

COLUMN                                                 CELL

content:header                                        timestamp=1407464457128, value=this is header3

content:header                                        timestamp=1407464454648, value=this is header2

content:header                                        timestamp=1407464302384, value=this is header

3 row(s) in 0.0490 seconds

hbase(main):024:0>

base用java来操作是最方便,也效率最高的方式。但java并非轻量级,不方便在任何环境下调试。而且不同的开发人员熟悉的语言不一样,开发效率也不一样。hbase 通过thrift,还可以用python,ruby,cpp,perl等语言来操作。

thrift是facebook开发开源的类似google的protobuf的远程调用组件。但protobuf只有数据的序列化,且只支持二进制协议,没有远程调用部分。protobuf原生支持cpp,python,java,另外还有第三方实现的objectc,ruby等语言。而thrift是实现了序列化,传输,协议定义,远程调用等功能,跨语言能力更多。某些方面二者可以互相替代,但一些方面则各有适用范围。

原文:http://rfyiamcool.blog.51cto.com/1030776/1537505

thrift的安装及thrift python的相关模块 ~

http://www.apache.org/dist//thrift/0.9.1/thrift-0.9.1.tar.gz
tar zxvf thrift-0.8.0.tar.gz
cd thrift-0.8.0
./configure -with-cpp=no
make
sudo make install
sudo pip install thrift

这里是可以生成python的thrift和hbase模块 ~

thrift -gen py /home/ubuntu/hbase-0.98.1/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

from thrift.transport import TSocket

from thrift.protocol import TBinaryProtocol

from hbase import Hbase

transport=TSocket.TSocket(‘localhost‘,9090)

protocol=TBinaryProtocol.TBinaryProtocol(transport)

client=Hbase.Client(protocol)

transport.open()

client.getTableNames()

原文:http://rfyiamcool.blog.51cto.com/1030776/1537505

hbase 0.98的版本 貌似没有thrift的相关组建,我这里的用的是0.94版本搞定的。

hbase之python利用thrift操作hbase数据和shell操作

时间: 2024-11-08 06:25:41

hbase之python利用thrift操作hbase数据和shell操作的相关文章

Python通过Thrift插入Hbase实验

#pythonfrom thrift import Thriftfrom thrift.transport import TSocketfrom thrift.transport import TTransportfrom thrift.protocol import TBinaryProtocol from hbase import Hbasefrom hbase.ttypes import * transport = TSocket.TSocket('192.168.137.101',909

Java操作JSON数据(2)--Gson操作JSON数据

Gson是Google公司发布的一个开发源码的Java库,可用于将Java对象转换为JSON字符串,也可用于将JSON字符串转换为对应的Java对象.本介绍下Gson的基本使用方法,包括序列化和反序列化:文中所使用到的软件版本:Java 1.8.0_191.Gson 2.8.6. 1.引入依赖 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactI

Python利用pandas处理Excel数据的应用

最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而利用pandas就会非常高效,基本上3行代码可以搞定你20行代码的操作!该教程仅仅限于结合柠檬班的全栈自动化测试课程来讲解下pandas在项目中的应用,这仅仅只是冰山一角,希望大家可以踊跃的去尝试和探索! 一.安装环境: 1:pandas依赖处理Excel的xlrd模块,所以我们需要提前安装这个,安装命令

python 利用csv模块导入数据

原文地址:https://www.cnblogs.com/fanweisheng/p/11227173.html

3.mysql的中文问题,database级操作,表级操作,数据CRUD,分组操作,时间和日期,字符串相关函数,表的约束

 1 连接MYSQL服务器:mysql–uroot –p123456 查看中文问题 show variables like 'character%'; 2 修改mysql的字符集,退出mysql提示符界面: mysql -uroot -p--default_character_set=gbk; 3  数据库的操作:创建,查看,修改,删除 *创建: 创建一个名称为mydb1的数据库. createdatabase mydb1; 创建一个使用utf-8字符集的mydb2数据库. create d

Python 操作 HBase —— Trift Trift2 Happybase 安装使用

Python无法直接访问HBase,必须通过Thrift. HBase与Thrift之间又支持两种接口标准,两种标准互不兼容,功能也互不覆盖. Thrift连接HBase还有超时自动断开的大坑. 安装Thrift依赖(Server端) Centos: yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel open

java操作Json数据

最近要使用java来操作Json数据,虽然Json用过几次,但一直没有好好总结,趁这次来总结一下java操作Json数据.Java操作Json有很多工具包,地址为http://www.json.org/,可以自己上去挑选. 这里我使用第一个org.json,最新源码地址为:https://github.com/douglascrockford/JSON-java,可以自己去下载,我也会在附件上传.下载源码后放进工程即可,包名为org.json 我们要操作的Json数据如下: {"total&qu

PHP通过Thrift操作Hbase

HBase是一个开源的NoSQL产品,它是实现了Google BigTable论文的一个开源产品,和Hadoop和HDFS一起,可用来存储和处理海量column family的数据.官方网址是:http://hbase.apache.org 一 .HBase访问接口 1.  Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据2.  HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用3. 

Python操作HBase之happybase

安装Thrift 安装Thrift的具体操作,请点击链接 pip install thrift 安装happybase pip install happybase 连接(happybase.Connection) happybase.Connection(host='localhost', port=9090, timeout=None, autoconnect=True, table_prefix=None, table_prefix_separator=b'_', compat='0.98'