hbase基本概念可以参考:https://www.cnblogs.com/swordfall/p/8737328.html

文章目录

  • 安装Hbase
  • Python连接Hbase
    • 1.创建、删除表结构
    • 2.增改表数据
    • 3.查看表数据
    • 4.删除表数据
  • 完整代码
  • 更多参考

安装Hbase

docker安装hbase:

docker pull harisekhon/hbase
docker run -d -h myhbase -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16201:16201 -p 16301:16301 --name hbase harisekhon/hbase

然后访问本机:http://localhost:16010/master-status,就可以看到基本的运行情况

Python连接Hbase

这里使用HappyBase连接

HappyBase文档:https://happybase.readthedocs.io/en/latest/user.html

HappyBasegithub页面:https://github.com/python-happybase/happybase

连接Hbase有两种方法:

import happybase# 方法1
connection = happybase.Connection()
connection.close()# 方法2
pool = happybase.ConnectionPool(size=3)
with pool.connection() as connection:pass

1.创建、删除表结构

HappyBase并不提供方法动态修改hbase的列族,因此当使用HappyBase定义了一个表的时候,它的列族就已经固定了,只能进入Hbase Shell进行修改列族的操作

import happybaseconnection = happybase.Connection()
# 创建hbase表if "my_hbase_table" not in connection.tables(): # 在所有的表中connection.create_table('my_hbase_table',  # 表名{"col_family_1": dict(),  # 定义列族"col_family_2": dict(),  # 定义列族})
elif not connection.is_table_enabled("my_hbase_table"): # 查看是否被禁用connection.enable_table("my_hbase_table") # 取消禁用
# connection.delete_table("my_hbase_table", disable=True) # 删除表
connection.close()

2.增改表数据

import happybasepool = happybase.ConnectionPool(size=3)# 获取连接
with pool.connection() as connection:table = connection.table("my_hbase_table")# 新增数据# 格式是:put("行名称",{" '列族:列名':'值' "})table.put("row1", {"col_family_1:col_1": "a", "col_family_2:col_1": "b"})table.put("row2", {"col_family_1:col_1": "1", "col_family_1:col_2": "2", "col_family_2:col_1": "c"})

Table.put()详细操作可以参考官网文档:https://happybase.readthedocs.io/en/latest/api.html#happybase.Table.put

3.查看表数据

import happybasepool = happybase.ConnectionPool(size=3)# 获取连接
with pool.connection() as connection:table = connection.table("my_hbase_table")# 查询数据# 方法1:one_row = table.row('row1')  # 获取row1行数据for value in one_row.keys():  # 遍历当前行的每一列print(value.decode('utf-8'), one_row[value].decode('utf-8'))  # 可能有中文,使用encode转码# 方法2:for row_index, col_families in table.scan():  # row_key是行index, col_families是列族for col_key, col_value in col_families.items():col_key_str = col_key.decode('utf-8')col_value_str = col_value.decode('utf-8')print("行:{} 列:{} 值:{}".format(row_index, col_key_str, col_value_str))print("=================")

4.删除表数据

import happybasepool = happybase.ConnectionPool(size=3)# 获取连接
with pool.connection() as connection:table = connection.table("my_hbase_table")# 删除数据table.delete("row1", ["col_family_1:col_1"])  # 删除单个单元格数据table.delete("row2", ["col_family_1"])  # 删除整个列族for row_index, col_families in table.scan():  # row_key是行index, col_families是列族for col_key, col_value in col_families.items():col_key_str = col_key.decode('utf-8')col_value_str = col_value.decode('utf-8')print("行:{} 列:{} 值:{}".format(row_index, col_key_str, col_value_str))

完整代码

import happybaseconnection = happybase.Connection()
# 创建hbase表if "my_hbase_table" not in connection.tables(): # 在所有的表中connection.create_table('my_hbase_table',  # 表名{"col_family_1": dict(),  # 定义列族"col_family_2": dict(),  # 定义列族})
elif not connection.is_table_enabled("my_hbase_table"): # 查看是否被禁用connection.enable_table("my_hbase_table") # 取消禁用
connection.close()
# 开始操作
pool = happybase.ConnectionPool(size=3)# 获取连接
with pool.connection() as connection:table = connection.table("my_hbase_table")# 新增数据# put("行名称",{" '列族:列名':'值' "})table.put("row1", {"col_family_1:col_1": "a", "col_family_2:col_1": "b"})table.put("row2", {"col_family_1:col_1": "1", "col_family_1:col_2": "2", "col_family_2:col_1": "c"})# 查询数据one_row = table.row('row1')  # 获取row1行数据for value in one_row.keys():  # 遍历当前行的每一列print(value.decode('utf-8'), one_row[value].decode('utf-8'))  # 可能有中文,使用encode转码for row_index, col_families in table.scan():  # row_key是行index, col_families是列族for col_key, col_value in col_families.items():col_key_str = col_key.decode('utf-8')col_value_str = col_value.decode('utf-8')print("行:{} 列:{} 值:{}".format(row_index, col_key_str, col_value_str))print("=================")# 删除table.delete("row1", ["col_family_1:col_1"])  # 删除单个单元格数据table.delete("row2", ["col_family_1"])  # 删除整个列族for row_index, col_families in table.scan():  # row_key是行index, col_families是列族for col_key, col_value in col_families.items():col_key_str = col_key.decode('utf-8')col_value_str = col_value.decode('utf-8')print("行:{} 列:{} 值:{}".format(row_index, col_key_str, col_value_str))

打印结果:

col_family_1:col_1 a
col_family_2:col_1 b
行:b'row1' 列:col_family_1:col_1 值:a
行:b'row1' 列:col_family_2:col_1 值:b
行:b'row2' 列:col_family_1:col_1 值:1
行:b'row2' 列:col_family_1:col_2 值:2
行:b'row2' 列:col_family_2:col_1 值:c
=================
行:b'row1' 列:col_family_2:col_1 值:b
行:b'row2' 列:col_family_2:col_1 值:c

更多参考

HBase简介:http://47.101.37.192/%E8%AF%BE%E4%BB%B6/%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F/Hive&HBase/05_hBase%E7%AE%80%E4%BB%8B%E4%B8%8E%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2.html

Python使用HappyBase连接Hbase与基本操作相关推荐

  1. 解决python使用happybase连接hbase报错thriftpy2.transport.base.TTransportException....TSocket read 0 bytes

    完整报错: thriftpy2.transport.base.TTransportException: TTransportException(type=4, message='TSocket rea ...

  2. Hbase(5)——python用happybase操作Hbase

    首先要在jvm上开启hbase服务 并且在jvm上的9090端口开启thrift服务:hbase thrift start-port:9090 在win上的python环境中装上happybase库: ...

  3. python基于happybase对hbase增删改查-thrift1

    准备工作: $ apt-get install libsasl2-dev # pip install thrift # pip install thrift-sasl # pip install ha ...

  4. python使用happybase库操作hbase

    若想深入理解Hbase的系统架构,推荐:https://www.jianshu.com/p/479bc6308381 happybase官方文档:https://happybase.readthedo ...

  5. java hbase创建_hadoop组件介绍及python 连接Hbase

    Ambari Apache Ambari是一种基于Web的工具,支持Hadoop集群的供应.管理和监控.是Apache顶级开源项目之一,由Hortonworks公司开源. Ø 官方网站地址: http ...

  6. python链接hbase模块_HBase实战(1):使用Python连接Hbase数据库

    来源于 https://blog.csdn.net/duan_zhihua/java/article/details/80622166 使用Python连接Hbase数据库 1,Hbase下载. 下载 ...

  7. Hadoop集群的基本操作(二:HBase的基本操作)

    实验 目的 要求 目的: 1.HBase的基本应用 要求: 完成HBase的高可用完全分布模式的安装: HBase的相关服务进程能够正常的启动: HBase控制台能够正常使用: 表创建.数据查询等数据 ...

  8. hadoop组件---面向列的开源数据库(九)--python--python使用thrift连接hbase

    Python使用thrift操作HBase thrift支持多种语言进行连接使用,但是没找到linux中的cli操作命令行的形式.所以如果服务器有python环境的话,可以使用python进行连接,快 ...

  9. java连接Hbase数据库

    java连接Hbase数据库 如果是是连接机群上的Hbase服务,需要提前将相关的几个xml文件存放在本地的编程目录下,否则开发端无法获取机群信息及授权: hdfs-site.xml core-sit ...

最新文章

  1. memcached完全剖析系列教程《转》 memcached完全剖析系列教程–2.理解memcached的内存存储...
  2. boost::type_erasure::is_placeholder相关的测试程序
  3. practical python and opencv_Practical Python and OpenCV + Case Studies
  4. 《汇编语言(第三版)》pushf 和 popf 指令,以及标志寄存器在 Debug 中的表示
  5. excel 26进制 php,记录一次华为招聘的编程题-excel中的26进制
  6. 自己的路 php,生活感悟的句子:走自己的路,做自己的事
  7. Redis —— 常用命令一览
  8. MySQL获取数据库连接对象_利用JDBC连接mysql数据库,获取连接对象的通用格式
  9. 路由器和交换机的区别,太经典了
  10. Linux宝库名人轶事栏目 | 我与中国开源软件二十年(二)
  11. android手机ipad传照片,教你iPhone与安卓跨平台如何传照片
  12. redis连接异常 redis.clients.jedis.exceptions.JedisClusterException: CLUSTERDOWN The cluster is down
  13. 官方jdk各个版本下载地址
  14. 玩游戏电脑IP被封了,怎么修改电脑IP
  15. 经典策略之一文读懂网格交易
  16. 【大数据】 大数据计算系统
  17. 会声会影2022新版本视频图文教程介绍
  18. 巧学五笔打字-----1小时可学会,不用死背字根 [图片]
  19. 1000元购物卷买票
  20. 补 2019.11.11-2019.11.17 arts:

热门文章

  1. TCPIP协议卷2之io中断
  2. 微信小程序动态更改标题栏_微信小程序实现动态设置页面标题的方法【附源码下载】...
  3. python中的列表理解_掌握『Python列表理解』需要知道的9件事,你知道了吗?
  4. BZOJ 1270 雷涛的小猫 dp
  5. jquery easyui 多选下拉框的实现
  6. SQL Server 2012安装配置(Part2 )
  7. DNSChanger路由器DNS劫持木马 新版本正在攻击家庭及小企业路由器 企图推送广告...
  8. 扩展jquery scroll事件,支持 scroll start 和 scroll stop
  9. 简单盘点手游开发引擎
  10. Instant Complexity--POJ 1472