【大数据运维】Hbase shell 常见操作

文章目录

  • [一. DDL](#一. DDL)
    • [1. 表的DDL](#1. 表的DDL)
      • [1.1. 创建表](#1.1. 创建表)
      • [1.2. 删除表](#1.2. 删除表)
    • [2. 列族的DDL](#2. 列族的DDL)
      • [2.1. 增加一个列簇](#2.1. 增加一个列簇)
      • [2.2. 删除列族](#2.2. 删除列族)
      • [2.3. 修改列族版本(ing)](#2.3. 修改列族版本(ing))
  • [二. DML](#二. DML)
    • [1. 插入与更新数据](#1. 插入与更新数据)
    • [2. 删除数据](#2. 删除数据)
    • [3. 清空表](#3. 清空表)
  • [三. DQL](#三. DQL)
    • [1. scan:查一批数据](#1. scan:查一批数据)
      • [1.1. 查询全部](#1.1. 查询全部)
      • [1.2. 过滤rowkey](#1.2. 过滤rowkey)
      • [1.3. 过滤列](#1.3. 过滤列)
      • [1.4. 列族查询](#1.4. 列族查询)
    • [2. get:查询一条](#2. get:查询一条)
      • [1.1. 指定rowkey](#1.1. 指定rowkey)
      • [1.2. 过滤值](#1.2. 过滤值)
      • [1.3. 过滤列](#1.3. 过滤列)

先进入到shell中 ./bin/hbase shell

sql 复制代码
-- 查看Hbase服务器状态
status


-- 查看当前数据库中有哪些表
list


-- 列出一些表的详细信息
describe 'book'

一. DDL

1. 表的DDL

1.1. 创建表

sql 复制代码
创建student表, 包含base_f1、base_f2两个列族

create 'student', 'base_f1', 'base_f2' 
或者 
create 'user', {NAME => 'base_f1', VERSIONS => '1'},{NAME => 'base_f2'}

1.2. 删除表

sql 复制代码
-- 先disable 再drop hbase
disable 'student' 
drop 'student' 

-- 如果不进行disable,直接drop会报错 ERROR: Table student is enabled. Disable it first.

2. 列族的DDL

2.1. 增加一个列簇

sql 复制代码
alter 'book','date'

2.2. 删除列族

sql 复制代码
alter 'student', 'delete' => 'base_f1'

2.3. 修改列族版本(ing)

sql 复制代码
alter 'book',{NAME=>'date',VERSIONS=>3}}

二. DML

1. 插入与更新数据

sql 复制代码
-- put '表名称', 'rowkey', '列族:列名', '值'
-- 因为表中只定义了列族,所以列族下的新列可以直接在插入数据下添加
-- 向表中添加数据,在想HBase的表中添加数据的时候,只能一列一列的添加,不能同时添加多列。

put 'staff1','0101','info2:nnn1','test'

更新操作同插入操作一模一样,只不过有数据就更新(实际是加了一个版本),没数据就添加

更新版本号

sql 复制代码
-- 将student表的 base_info 列族版本号改为5

alter 'student', NAME => 'base_f1', VERSIONS => 5

2. 删除数据

sql 复制代码
-- 删除student表 rowkey为rk01,列标示符为 base_f1:name 的数据

delete 'student', 'rk01', 'base_f1:name'


-- 指定时间戳删除
delete 'student', 'rk01', 'base_f1:name', 1392383705316

3. 清空表

sql 复制代码
truncate 'book'

三. DQL

1. scan:查一批数据

1.1. 查询全部

sql 复制代码
scan 'staff1'

ROW                         COLUMN+CELL
 0101                       column=info1:sea, timestamp=1711098585861, value=test
 0102                       column=info2:addr, timestamp=1711098585993, value=test1
 0102                       column=info2:name, timestamp=1711098585923, value=test1
 0102                       column=info2:sea1, timestamp=1711098585895, value=test1  


-- 过滤查询
scan 'book',{LIMIT=>2}


-- 包含STARTROW,不包含ENDROW
scan 'book',{STARTROW=>'1',ENDROW=>'3'}

1.2. 过滤rowkey

sql 复制代码
-- 查询student表中row key以rk字符开头的

scan 'student',{FILTER=>"PrefixFilter('rk')"}

1.3. 过滤列

sql 复制代码
-- 查询student表中列族为 base_f1 和 base_f2且列标示符中含有aa字符的信息

scan 'student', {COLUMNS => ['base_f1 ', 'base_f2'], FILTER => "(QualifierFilter(=,'substring:aa'))"}

1.4. 列族查询

sql 复制代码
-- 列族
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

sql 复制代码
--获取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. 过滤值

sql 复制代码
-- 获取student表中row key为rk01,值为zhangsan的信息

get 'student', 'rk01', {FILTER => "ValueFilter(=, 'name:zhangsan')"}

1.3. 过滤列

sql 复制代码
-- 获取student表中row key为rk01,列中含有a的信息
get 'student', 'rk01', {FILTER => (QualifierFilter(=,'substring:a'))"}
相关推荐
2501_93367079几秒前
2026年中专大数据专业可考取的证书
大数据
ICT董老师4 分钟前
通过kubernetes部署nginx + php网站环境
运维·nginx·云原生·容器·kubernetes·php
敬往事一杯酒哈9 分钟前
Ubuntu 20.04 安装Anacada
linux·运维·ubuntu
还在忙碌的吴小二10 分钟前
Jenkins CLI (jcli) 使用手册
运维·jenkins
ChangYan.12 分钟前
Windows命令行(cmd)下快速查找文件路径(类似Linux下find命令)
linux·运维·服务器
oMcLin14 分钟前
如何在Ubuntu 22.04 LTS上优化PostgreSQL 14集群,提升大数据查询的响应速度与稳定性?
大数据·ubuntu·postgresql
陈让然29 分钟前
VS Code新版本无法连接WSL ubuntu18.04
linux·运维·ubuntu
lpfasd12332 分钟前
宝塔面板使用流程及注意事项
运维
信创天地32 分钟前
核心系统去 “O” 攻坚:信创数据库迁移的双轨运行与数据一致性保障方案
java·大数据·数据库·金融·架构·政务