目录
1、HBase 命令行操作
[root@node1 ~]# hbase shell
命令行输入命令:
help
,显示支持命令,可以查看帮助。
2、HBase 命令行【NameSpace DDL】
- 列举所有Namespace 命令:
list_namespace
,类似MySQL:show databases - 列举某个NameSpace中的表 命令:
list_namespace_tables
,类似MySQL:show tables in dbnamelist_namespace_tables 'Namespace的名称'
- 创建NameSpace 命令:
create_namespace
,类似MySQL:create database dbnamecreate_namespace 'Namespace的名称
- 删除NameSpace 命令:
drop_namespace
,只能删除空命名空间,如果命名空间中存在表,不允许删除drop_namespace 'Namespace的名称
3、HBase 命令行【Table DDL】
常见命令:
Group name: ddl Commands: alter, alter_async, alter_status, clone_table_schema, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, list_regions, locate_region, show_filters
- 列举所有用户表 命令:
list
,类似MySQL:show tables - 创建表 命令:
create
,类似MySQL:表名 + 列的信息【名称和类型】必须指定表名 + 至少一个列族 语法:#表示在ns1的namespace中创建一张表t1,这张表有一个列族叫f1,这个列族中的所有列可以存储5个版本的值create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}#在default的namespace中创建一张表t1,这张表有三个列族,f1,f2,f3,每个列族的属性都是默认的create 't1', 'f1', 'f2', 'f3'
``` - 查看某个表信息 命令:
desc
,类似MySQL :desc tbname 语法:desc ‘表名’ - 判断存在某个表是否存储 命令:
exists '表名'
- 表的禁用和启用 命令:
disable / enable
功能:- HBase为了避免修改或者删除表,影响这张表正在对外提供读写服务- 规定约束:修改或者删除表时,必须先禁用表,表示这张表暂时不能对外提供服务- 如果是删除:禁用以后删除- 如果是修改:先禁用,然后修改,修改完成以后启用 - 删除某个表 命令:
drop
,类似MySQL:drop table tbname 如果要对表进行删除,必须先禁用表,再删除表
4、HBase 命令行【DML put】
掌握HBase插入更新的数据命令put的使用
- 功能 插入 / 更新数据【某一行的某一列】 HBase数据库属于NoSQL数据库,面向列操作,对表中数据操作时,都是一列一列操作
# 比如,插入一条数据到HBase表中,有10列,此时操作10次,每列每列数据写入表中 RowKey + ColumnFamily + Column + Version -> Value[Version版本,通常不指定,插入数据时,默认情况下,以插入数据时的时间戳为version]
- 语法 表名+rowkey+列族+列+值
put 'ns:tbname', 'rowkey', 'cf:col', 'value'
HBase表数据:按照Rowkey构建字典有序 - 排序规则: - 先依据RowKey升序,再按照列簇CF升序,最后列名Column升序- 底层存储也是KV结构:每一列就是一条KV数据- K:Rowkey + 列族 + 列 + 时间【降序】- V:值- 没有更新和删除:通过插入来代替的,做了标记不再显示
5、HBase 命令行【DML get】
- 功能:读取某个Rowkey的数据
- 优点:Get是HBase中查询数据最快的方式,并不是最常用的方式
- 缺点:get命令最多只能返回一个rowkey的数据,根据Rowkey进行检索数据
- 语法:
get 表名 rowkey [列族,列]
- 用法:
1. 获取表中某一行数据 所有列的值 get 'table_name', 'rowkey' 2. 获取表中某一行的某个列簇数据 某个列簇的所有行数据 get 'table_name', 'rowKey', 'column_family' 3. 获取表中某一行的某个一列数据 仅仅一列数据 get 'table_name', 'rowkey', 'column_family:column_name'
6、HBase 命令行【DML scan】
- 功能:根据条件匹配读取多个Rowkey的数据
- 语法:
读取整张表的所有数据,一般不用,类似SELECT * FROM tbl_xx scan 'tbname'经常与LIMIT结合使用,获取表中前N条数据scan 'tbname', {LIMIT => 10}#根据条件查询:工作中主要使用的场景, 用到最多scan 'tbname', {Filter}
- 举例:-
scan 'people', {LIMIT => 2}
扫描people表中两条数据- rowkey前缀过滤器,在HBase数据查询中,使用最多RowKey 前缀过滤器,如果表中数据的RowKey前缀与指定表达式一致,获取数据 scan 'people', {ROWPREFIXFILTER => '1001'} scan 'people', {ROWPREFIXFILTER => '100'}
- rowkey范围过滤器STARTROW:从某个rowkey开始,包含,闭区间STOPROW:到某个rowkey结束,不包含,开区间scan 'people', {STARTROW=>'1001'}scan 'people', {STARTROW=>'1001', STOPROW=>'1003'}
- 面试题:HBase数据库数据查询方式有哪些??- 1、get查询,依据具体RowKey直接查询数据,查询速度最快- 2、Scan全部扫描查询,性能最差,几乎不建议使用- 3、Scan范围查询,过滤器查询,前缀匹配查询,设置查询RowKey范围
7、HBase 命令行【DML count】
- 功能:删除HBase中的数据
- 语法
#删除某列的数据delete tbname, rowkey, cf:col#删除某个rowkey数据deleteall tbname, rowkey#清空所有数据:生产环境不建议使用,建议删表重建truncate tbname
- 示例
# 删除某一列数据delete 'people', '1001', 'info:address'# 删除某一行row数据deleteall 'people','1002'# 清空表数据truncate 'people'
· 在实际生产环境中,如果需要清空HBase某个表中数据,不建议使用:
truncate table_name
- 第1步、先禁用表
disable
,然后删除表drop
- 第2步、重新创建表
create
本文转载自: https://blog.csdn.net/weixin_45867303/article/details/139952379
版权归原作者 豌豆*(瓜 所有, 如有侵权,请联系我们删除。
版权归原作者 豌豆*(瓜 所有, 如有侵权,请联系我们删除。