-
进入 hbase shell 命令行
./hbase shell
-
查看帮助
#查看帮助,会列出 命令组 help #有哪些命令组,常见的CRUD命令在 ddl 和 dml下面 COMMAND GROUPS: Group name: general Group name: ddl Group name: namespace Group name: dml Group name: tools Group name: replication Group name: snapshots Group name: configuration Group name: quotas Group name: security Group name: procedures Group name: visibility labels Group name: rsgroup Group name: storefiletracker
-
hbase shell 里面 字符串可以用 '' 或者 ""表示
-
hbase的参数格式
命令 参数1,参数2,参数3,...格式 命令 参数1,参数2,{属性1=>值,属性2=>值},...格式 如果参数是多个属性的{属性1=>值,属性2=>值}表示,所有属性都需要大写,属性不能用""包裹
-
命名空间操作(类似数据库)
- help "namespace" #查看命名空间相关命令用法
- list_namespace #查看有哪些命名空间
- create_namespace 命名空间名字 #创建命名空间
- drop_namespace 命名空间名字 #删除命名空间
-
表的操作
-
help "ddl" #查看ddl相关命名
-
hbase有两个自带命名空间 hbase 和 default
如果是default命名空间的表可以省略命名空间 -
alter 't1', 'f1', {NAME => 'f2', IN_MEMORY => true}, {NAME => 'f3', VERSIONS => 5} #修改表定义
alter "goods",{NAME=>"f1:name",VERSIONS=>3}
-
create "命名空间.表名","列族1","列族2" #创建一个表,有两个列族(简写)
-
create "t1", {NAME => "f1", VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}
创建一个表t1,创建列族f1,这个列族保留1个版本 -
disable "ns1:t1" #禁用一个表
-
enable "ns1:t1" #启用一个表
-
drop "ns1:t1" #删除一个表(删除前必须要禁用)
-
desc "ns1:t1" #查看表的结构
-
truncate "ns1:t1" #清空一个表的数据
-
exists "ns1.t1" #表是否存在
-
list "goo.*" #查看指定看开头的表
-
-
表数据的操作
- help "dml" #查看dml相关命名
- put "表名","rowId","列族:列名","0003name" #添加数据(一次添加一个cell,一行数据需要多次添加)
put 可以添加也可以修改,修改实际就是添加一个新版本的数据 - get "表名","rowId" #查询指定行记录
- get 't1', 'r1', {COLUMN => ['c1', 'c2', 'c3']} #查询的时候只查询只指定列族
- scan "goods",{STARTROW=>"开始ID",ENDROW=>"结束ID"} #扫描一个表(分页查询)
- scan "goods",{STARTROW=>"开始ID",LIMIT=>每页多少条} #分页查询
- scan "goods" #查询全部
- count "表名" #查看有多少条记录
- deleteall "表名", "rowId" #删除一条记录
- deleteall "表名", "rowId" ,"f1" #删除一个列族里面的数据
- incr "表名","rowId","列族:列名" #指定列自增(需要long类型才可以)
- incr "表名","rowId","列族:列名" ,10 #指定列自增10
-
列族属性
-
NAME #列族名字
-
VERSIONS #保留几个版本
默认0 -
MIN_VERSIONS # 最小版本数
-
IN_MEMORY # 激进缓存
-
BLOOMFILTER # 布隆过滤器
-
TTL #保存时间(s)
默认永久 -
BLOCKCACHE #是否启用块缓存
-
BLOCKSIZE # 数据块大小
默认64K -
DATA_BLOCK_ENCODING # 数据块编码
-
CONFIGURATION #
-
COMPRESSION # 压缩方式
-
NUMREGIONS #region的数量
-
SPLITS_FILE #使用指定文件拆分region
实际是更具 rowkey 的字段顺序拆分的,所以rowkey的前面几个字符的设计应该考虑分区 #比如文件是这样 1 2 3 表示 rowkey小于1的一个区, 1-2的一个区 2-3的一个区 3以上的一个区 这里的区间是字段排序的区间不是数字的区间
-
REGION_REPLICATION #region的副本数
-
SPLITS #指定分区
SPLITS => [‘1000’,‘2000’,‘3000’,‘4000’]
-
SPLITALGO #按照16进制分区
SPLITALGO=>'HexStringSplit'
-
OWNER #所属人
-
-
查看历史版本
-
hbase里面的数据实际是不能修改的,修改实际是新增数据,并且保留指定version数量个版本.
超过version数量的版本会在合并数据的时候被删除. -
指定保存多少个版本是在列族上指定的
#goods表,的f1列族,保留5个最新版本 alter 'goods', {NAME => 'f1', VERSIONS => 5}
-
所以查询历史版本也是要指定到列族,不指定版本都是指显示最新的一个版本(时间最大的版本)
#查看goods表,rowKey="0003"的记录,里面列族是f1,列是name的cell,并且查看最新的两个版本 get "goods","0003",{COLUMN=>"f1:name",VERSIONS=>2}
-
-
delete 和 deleteall 的区别
-
deleteall 删除的全部版本数据,
deleteall 可以删除整行数据,也可以删除指定列族或者列的数据 -
delete 删除最新的版本
版本是定义在列族上面的,所以不能删除行,只能删除列数据,并且删除列族也无效#删除的是 0003这列,里面 f1:name 最新的一个版本的数据 delete "goods","0003","f1:name
-