【大数据运维】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'))"}
相关推荐
玉石观沧海4 分钟前
高压变频器故障代码解析F67 F68
运维·经验分享·笔记·分布式·深度学习
IT学长编程1 小时前
计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·hadoop·python·毕业设计·课程设计·毕业论文·海洋气象数据可视化平台
呆呆小金人1 小时前
SQL入门: HAVING用法全解析
大数据·数据库·数据仓库·sql·数据库开发·etl·etl工程师
要做朋鱼燕2 小时前
【AES加密专题】1.AES的原理详解和加密过程
运维·网络·密码学·c·加密·aes·嵌入式工具
yunson_Liu2 小时前
jenkins更新了gitlab后出现报错
运维·gitlab·jenkins
iconball2 小时前
个人用云计算学习笔记 --19 (MariaDB服务器)
linux·运维·笔记·学习·云计算
Lynnxiaowen2 小时前
今天我们开始学习python3编程之python基础
linux·运维·python·学习
skywalk81633 小时前
term.everything‌ 通过终端运行任意GUI应用程序
运维
Elastic 中国社区官方博客3 小时前
如何减少 Elasticsearch 集群中的分片数量
大数据·数据库·elasticsearch·搜索引擎·全文检索
dragoooon343 小时前
[Linux系统编程——Lesson6.进程切换与调度]
linux·运维·服务器