0


HBase分布式数据库(二)

目录

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
版权归原作者 豌豆*(瓜 所有, 如有侵权,请联系我们删除。

“HBase分布式数据库(二)”的评论:

还没有评论