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的相关模块 ~

1
2
3
4
5
6
7
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模块 ~

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


wKiom1PkaziSW8boAAFfmCFA2DA129.jpg


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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版本搞定的。  




 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1537505,如需转载请自行联系原作者



相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
11天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
1天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
16 1
|
1天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by='A', ascending=False)`。`rank()`函数用于计算排名,如`df['A'].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`和分别对'A'、'B'列排名。
12 2
|
2天前
|
Python
如何使用Python的Pandas库进行数据缺失值处理?
Pandas在Python中提供多种处理缺失值的方法:1) 使用`isnull()`检查;2) `dropna()`删除含缺失值的行或列;3) `fillna()`用常数、前后值填充;4) `interpolate()`进行插值填充。根据需求选择合适的方法处理数据缺失。
28 9
|
4天前
|
索引 Python
如何使用Python的Pandas库进行数据透视表(pivot table)操作?
使用Pandas在Python中创建数据透视表的步骤包括:安装Pandas库,导入它,创建或读取数据(如DataFrame),使用`pd.pivot_table()`指定数据框、行索引、列索引和值,计算聚合函数(如平均分),并可打印或保存结果到文件。这允许对数据进行高效汇总和分析。
10 2
|
5天前
|
JSON 关系型数据库 数据库
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
30 0
|
6天前
|
机器学习/深度学习 Python 数据处理
Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据
Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据
27 0
Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据
|
6天前
|
存储 机器学习/深度学习 数据可视化
Python面板时间序列数据预测:格兰杰因果关系检验Granger causality test药品销售实例与可视化
Python面板时间序列数据预测:格兰杰因果关系检验Granger causality test药品销售实例与可视化
49 6
|
6天前
|
机器学习/深度学习 数据采集 供应链
从数据到决策:scikit-learn在业务分析中的应用
【4月更文挑战第17天】本文探讨了scikit-learn在业务分析中的应用,包括数据预处理、分类、回归和聚类模型的构建,以及模型评估与优化。通过使用scikit-learn,企业能有效处理数据、预测趋势、客户细分并制定决策,从而提升经营效率和市场策略。随着机器学习的发展,scikit-learn在业务分析领域的潜力将持续释放,创造更多价值。
|
6天前
|
算法 数据可视化 Python
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
11 0