HBase基础(二):DDL和DML常用操作

1、shell操作

1、执行shell命令    $ bin/hbase shell
2、输入help获取帮助信息
3、shell命令行的删除,需要按住ctrl+删除键才可以删除
    4、version     获取当前hbase版本
    5、status    查看数据库状态 
    6、exists 't1'   判断表是否存在
    7、is_enabled  't1' 判断表是否enable或者disable 
    8、count 't1' 查看有多少条记录

2、HBase的DDL操作

    1.创建namespace    create_namespace  'nstest'
    2.描述查看namespace的结构   describe_namespace 'nstest'
    3.列出当前数据库中的所有namespace    list_namespace
    4.删除namespace    drop_namespace 'nstest2'
    5.创建表
       示例1: create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}
    -》ns1指的就是namespace,t1代表table_name(ns1:t1这样的格式就是唯一确定了一张表)
    -》在hbase中=>符号表示等于
    -》f指的是列簇,VERSIONS => 5代表同时能够存储的版本数
    -》建表时要指定一个列簇,可以指定多个列簇,一个大括号中只能指定一个NAME(变量)
    -》一个列簇就是一个大括号
       示例2: create 'stu_test','f1'(一个列簇)
                     create 't1', 'f1', 'f2', 'f3' (多个列簇)
            -》在建表的时候可以指定在某个namespace下,比如:ns1:t1,
                  没有指定就是在默认的数据库下面创建
      5.描述表结构    desc   't1'
      6.列出namespace中所有的table  list 
                  (如果没有指定,则是默认的namespace)
      7.删除表:在hbase中表有启用和禁用的状态区分,在删除和修改前需要先禁用,
               如果是修改那么完成后需要再启用
          先禁用:disable   't1'    
          然后才能删除:drop   't1'
          禁用/启用命令:disable, disable_all /  enable, enable_all
      8.修改表:凡是要修改表的结构hbase规定,必须先禁用表->修改表->启动表,直接修改会报错
         -》删除表中的列簇:alter ‘t1’,{NAME=>'info',METHOD=>'delete'}   
         -》修改版本存储个数:alter 't1' ,{name=>'info',VERSION=>3}

3、HBase的DML操作

    1.添加数据    put 'ns1:t1', 'r1', 'c1', 'value'
        -》r1代表rowkey ; c1代表列簇+列 ; value代表具体插入的值
        -》put 'nstest:tb1','20170521_10001','info:name','leo'
        -》put 'nstest:tb1','20170521_10001','info:age','18'
    2.查询数据  get scan
        - 》 get 'ns1:t1', 'r1'  单行操作
            - 》get 'nstest:tb1','20170521_10001'          指定rowkey
            - 》get 'nstest:tb1','20170521_10001','info'     指定列簇进行查询
            - 》get 'nstest:tb1','20170521_10001','info:name'  指定某一列查询
        - 》 scan  'ns1:t1'      全表扫描
           - 》scan 'ns1:t1', {COLUMNS =>['info:name', 'info:age'], LIMIT => 10 
                STARTROW => '20170521_10001',STOPROW => '20170521_10003'}
           - 》STARTROW代表开始的行号,STOPROW代表结束的行号;包头不包尾
          - 》LIMIT 表示查询条数;'info:name', 'info:age' 表示列簇和列
    3.删除数据 delete deleteall
       - 》delete 'nstest:tb1','20170521_10001','info:name' 
                   删除时必须指定列,不能直接删除列簇
       - 》deleteall 删除整行 deleteall  'nstest:tb1' , '20170521_10001'
    4.截断表 tauncate 't1'
       - 》truncate表的处理过程:由于Hadoop的HDFS文件系统不允许直接修改,
       所以只能先删除表,再重新创建已达到清空表的目的               

4、Split 和 Compact

Split:
      -》手动:split 'tb1','bc31bc83af45aab95d5d8a62962b23f5'
      -》建表时预设:create ‘tb1’,'f1',SPLIT=>['a','b','c']
Compact:
      -》merge_region '759a217c34ad5203801866dab4b6b209',
          '939affd918502d5e46792367a0a4a59a', true
      -》major_compact  ‘t1’

注:put get delete是单行操作;
scan扫描一段范围内的Rowkey,由于rowkey有序从而scan也有序;
get和scan支持各种Filter,将逻辑推给Region Server,以此为基础可以实现复杂的查询;
在单行上可以加锁,具备强一致性;

    原文作者:张凯_9908
    原文地址: https://www.jianshu.com/p/41d3776e133d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞