文章目录
- 一. DDL
- 1. 表的DDL
- 1.1. 创建表
- 1.2. 删除表
- 2. 列族的DDL
- 2.1. 增加一个列簇
- 2.2. 删除列族
- 2.3. 修改列族版本(ing)
- 二. DML
- 1. 插入与更新数据
- 2. 删除数据
- 3. 清空表
- 三. DQL
- 1. scan:查一批数据
- 1.1. 查询全部
- 1.2. 过滤rowkey
- 1.3. 过滤列
- 1.4. 列族查询
- 2. get:查询一条
- 1.1. 指定rowkey
- 1.2. 过滤值
- 1.3. 过滤列
先进入到shell中 ./bin/hbase shell
-- 查看Hbase服务器状态
status-- 查看当前数据库中有哪些表
list-- 列出一些表的详细信息
describe 'book'
一. DDL
1. 表的DDL
1.1. 创建表
创建student表, 包含base_f1、base_f2两个列族create 'student', 'base_f1', 'base_f2'
或者
create 'user', {NAME => 'base_f1', VERSIONS => '1'},{NAME => 'base_f2'}
1.2. 删除表
-- 先disable 再drop hbase
disable 'student'
drop 'student' -- 如果不进行disable,直接drop会报错 ERROR: Table student is enabled. Disable it first.
2. 列族的DDL
2.1. 增加一个列簇
alter 'book','date'
2.2. 删除列族
alter 'student', 'delete' => 'base_f1'
2.3. 修改列族版本(ing)
alter 'book',{NAME=>'date',VERSIONS=>3}}
二. DML
1. 插入与更新数据
-- put '表名称', 'rowkey', '列族:列名', '值'
-- 因为表中只定义了列族,所以列族下的新列可以直接在插入数据下添加
-- 向表中添加数据,在想HBase的表中添加数据的时候,只能一列一列的添加,不能同时添加多列。put 'staff1','0101','info2:nnn1','test'
更新操作同插入操作一模一样,只不过有数据就更新(实际是加了一个版本),没数据就添加
更新版本号
-- 将student表的 base_info 列族版本号改为5alter 'student', NAME => 'base_f1', VERSIONS => 5
2. 删除数据
-- 删除student表 rowkey为rk01,列标示符为 base_f1:name 的数据delete 'student', 'rk01', 'base_f1:name'-- 指定时间戳删除
delete 'student', 'rk01', 'base_f1:name', 1392383705316
3. 清空表
truncate 'book'
三. DQL
1. scan:查一批数据
1.1. 查询全部
scan 'staff1'ROW COLUMN+CELL0101 column=info1:sea, timestamp=1711098585861, value=test0102 column=info2:addr, timestamp=1711098585993, value=test10102 column=info2:name, timestamp=1711098585923, value=test10102 column=info2:sea1, timestamp=1711098585895, value=test1 -- 过滤查询
scan 'book',{LIMIT=>2}-- 包含STARTROW,不包含ENDROW
scan 'book',{STARTROW=>'1',ENDROW=>'3'}
1.2. 过滤rowkey
-- 查询student表中row key以rk字符开头的scan 'student',{FILTER=>"PrefixFilter('rk')"}
1.3. 过滤列
-- 查询student表中列族为 base_f1 和 base_f2且列标示符中含有aa字符的信息scan 'student', {COLUMNS => ['base_f1 ', 'base_f2'], FILTER => "(QualifierFilter(=,'substring:aa'))"}
1.4. 列族查询
-- 列族
scan 'student', {COLUMNS => ['base_f1', 'base_f2']} --列族:列
scan 'student', {COLUMNS => ['base_f1:name', 'base_f2:address']}-- 列族:列 并指定最新的三个版本
scan 'student', {COLUMNS => 'base_f1:name', VERSIONS => 3}
2. get:查询一条
1.1. 指定rowkey
--获取student表中row key为rk01的所有信息
get 'student', 'rk01'-- 获取user表中row key为rk0001,base_info列族的所有信息
get 'student', 'rk01', 'base_f1'-- 获取student表中row key为rk0001,base_info列族的name、age列标示符的信息
get 'student', 'rk01', 'base_f1:name', 'base_f2:address'
1.2. 过滤值
-- 获取student表中row key为rk01,值为zhangsan的信息get 'student', 'rk01', {FILTER => "ValueFilter(=, 'name:zhangsan')"}
1.3. 过滤列
-- 获取student表中row key为rk01,列中含有a的信息
get 'student', 'rk01', {FILTER => (QualifierFilter(=,'substring:a'))"}