如何理解Hbase中大小Key,及简单实用Hbase

Hbase中
大key是Rowkey,小key是colume(列簇)相当于maplist 列簇中列的数量相当于是无限定的

也看到有人说大Key是Rowkey ,小key是 colume:list(即"列蔟:列名"),如有不同,评论区见♡

其他大数据架构框架中及到大小key的NoSql数据库比如:Redis也是分大小key的
在这里插入图片描述

  • 列簇中的列想加多少就加多少

    • 这个特性让他非常适合做用户画像,可以参考b站黑马的用户画像项目
    • 企业级360度用户画像项目
    • 实际的用户画像项目的标签就是一条条加上HBase去的,各种标签分类相当于是列簇,用户唯一标识是大key(RowKey)
  • 列簇里面的所有列是map结构

  • 列簇可以理解是一个map数组的结构
    9

shell操作

Hbase是原生不支持sql操作的

2.1需求

有以下订单数据,我们想要将这样的一些数据保存到Hbase中.

订单订单状态支付金额支付方式用户ID操作时间商品分类
001已付款200.510012020-5-2 18:08:53手机

接下来我们是用HBase shell进行以下操作:

  1. 创建表:
create "表名","列蔟1", "列蔟2"
create 'ORDER_INFO','C1';
hbase(main):005:0> list
TABLE                                                                                                                                                                    
ORDER_INFO                                                                                                                                                               
1 row(s)
Took 0.0378 seconds                                                                                                                                                      
=> ["ORDER_INFO"]

要删除表前先Disable表,防止还有人使用,然后再drop

disable "ORDER_INFO"
drop "ORDER_INFO"
  1. 添加数据

接下来,我们需要往订单表中添加以下数据。在这里插入图片描述


put "表名", "rowkey", "列蔟:列名", "值"
put 'ORDER_INFO','000001','C1:ID','000001'
put 'ORDER_INFO','000001','C1:STATUS','已提交'
put 'ORDER_INFO','000001','C1:PAY_MONEY',4070
put 'ORDER_INFO','000001','C1:PAYWAY',1
put 'ORDER_INFO','000001','C1:USER_ID',4944191
put 'ORDER_INFO','000001','C1:OPERATION_DATE','2020-04-25 12:09:16'
put 'ORDER_INFO','000001','C1:CATEGORY','手机;'
  1. 更新数据
put 'ORDER_INFO', '000001', 'C1:STATUS', '已付款'
  1. 删除数据

删除列操作 :delete ‘表名’, ‘rowkey’, ‘列蔟:列’。

delete 'ORDER_INFO','000001','C1:STATUS'

删除删除指定的订单的行

deleteall 'ORDER_INFO','000001'

执行delet的时候

  • 如果表中的某个列有对一个的几次修改,他会删除最近的一次
  • 默认是会保存三个版本的时间戳
  • 有一个version属性
  1. 查询数据

查询指定订单ID的数据: get ‘表名’,‘rowkey’(获得一行)

get '表名','rowkey'
get 'ORDER_INFO','000001'

效果如下
在这里插入图片描述

查看订单的数据(解决中文乱码的问题,并不是获得某列值)

get 'ORDER_INFO','000001', {FORMATTER => 'toString'}
  • { key => value},这个是Ruby语法,表示定义一个HASH结构
  • get是一个HBase Ruby方法,’ORDER_INFO’、’000001’、{FORMATTER => >‘toString’}是put方法的三个参数
  • FORMATTER要使用大写
  • 在Ruby中用{}表示一个字典,类似于hashtable,FORMATTER表示key、’toString’表示值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值