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 dbname

    list_namespace_tables 'Namespace的名称' 
    
  • 创建NameSpace
    命令:create_namespace,类似MySQL:create database dbname

    create_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

    功能:

  • 删除某个表
    命令: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
  • 31
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豌豆*(瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值