Hadoop大数据系列之NoSql海量数据库Hbase入门Shell篇(二)

一、Hbase shell相关操作

进入Hbase操作
hbase shell

说明:搭建好了大数据平台前提下,并且配置了配置环境变量,直接在任何路径下可用

1、help 帮助命令
   help '命令名字'

1.1、status 查看状态
1.2、version 查看版本

2、hbase中数据库的概念
   namespace(命名空间,相当于传统数据库的DataBases)
2.1、显示所有的数据库(命名空间)
    list_namespace 
    默认  default 库
             hbase


2.2、显示当前数据库(命名空间)中所有的表
    list_namespace_tables 'hbase'
2.3、创建一个数据库(命名空间)
    create_namespace 'liuwunan'
说明:其实默认的default 完全够用
2.4、描述数据库(命名空间)
    describe_namespace 'liuwunan'
2.5、修改数据库(命名空间)
    alter_namespace
2.6、删除数据库(命名空间)
    drop_namespace 'liuwunan'

3、创建hbase中的表【重点】
    create '表名','列簇'
3.1、基本的建表方式 【默认default库中】
    创建 '表名t1','列簇cf1'
    create 't1','cf1'


3.2、创建多个列簇【默认default库中】
   create 't1','cf1','cf2'
3.3、指定表所属的数据库
   create 'liuwunan:t1','cf1'
   创建表指定'库为liuwunan:表名t1','列簇为cf1'
3.4、详细描述列簇的相关属性
   create 'liuwunan:t2',{NAME=>'cf1',VERSIONS=>2},{NAME=>'cf2'}
   创建表t2指定数据库库为liuwunan,指定列簇一数据版本号为cf1,列簇2数据版本号为默认3

4、描述表 
   describe 'liuwunan:t1'

5、修改表类簇版本号
   alter 'liuwunan:t2',{NAME=>'cf2',VERSIONS=>2}

6、删除表
    disable 'liuwunan:t2'
    drop 'liuwunan:t2'
  【hbase在删表之前需要先将表挂起,禁用】
  【truncate 'table_name'  是HBase是先将表disable,再drop the table,最后creating table】

7、失效 生效表相关命令
   enable disable 
   enable_all disable_all
   is_enable is_disable

8、判断表是否存在
   exists '表名'

9、表的查找命令
   list 'ns:t.*'


   查询当前ns库下的ns库下的t开头的所有表

10、 插入数据
    put 't1','rowkey','列簇:字段','值'
    put 'default:Student','13565465702','baseInfo:age','11111111'

11、 删除数据指定时间戳某字段的数据
    delete 'ns:t1' ,'rowkey','family:qualify','timestamp'

12、 全表扫描 
    scan '表名' 
    scan 'Student'

13、全表区间扫描
    scan '库名:表名', {STARTROW => '起始RowKey',STOPROW => '结束RowKey'}
    scan 'default:Student',{STARTROW=>'13565465702',STOPROW=>'15778117684'}

14、 根据RowKey的查询
    get 'default:Student','13820648931'

15、全表扫描,只展示一条数据【LIMIT】
    scan 'default:Student',{LIMIT => 1}

16、更新数据,PUT(RowKey相同,数据覆盖即更新)
    put 'default:Student','13565465702','baseInfo:age','11111111'

17、Hbase表总量统计
      count '表名'

18、Scan全表指定列簇扫描
     扫描 '表名','列簇'
     scan 'Student',{COLUMNS=>'baseInfo'}

18.1、Scan全表扫描指定列簇和列名
       扫描 '表名',{COLUMNS=>''列簇.字段}
       scan 'Student',{COLUMNS=>'baseInfo:age'}

18.2、Scan全表扫描指定多列簇和多字段,并且限制条数
       scan '表名',{COLUMNS=>['列簇1:字段1','列簇2:字段2'],LIMIT=>3}
       scan 'Student',{COLUMNS=>['baseInfo:age','schoolInfo:name'],LIMIT=>3}

18.3、限制时间范围
       scan 'Student',{TIMERANGE=>[1448045892646,1848045892647]}

18.4、Filter 过滤部分
       PrefixFilter:rowKey前缀过滤
       scan 'Student',{FILTER=>'PrefixFilter('135')'}

18.5、QualifierFilter:列过滤器
QualifierFilter对列的名称进行过滤,而不是列的值。
scan 'Student',{FILTER=>"PrefixFilter('1') AND QualifierFilter(>=,'binary:b')"}
 

18.6、TimestampsFilter:时间戳过滤器
scan 'Student',{FILTER=>"TimestampsFilter(1448069941270,1548069941230)"}

18.7、设置数据TTL时间(存活时长)

Hbase关于TTL

ColumnFamilies可以以秒为单位来设置 TTL(Time To Live)长度,
生命时长,一旦达到到期时间,HBase 将自动删除行。
设置hbase.store.delete.expired.storefile为false将禁用此功能。
将最小版本数设置为 0 ,外的值也会禁用此功能。也支持设置时间以每个单元列为基础生存。

单元格TTL是使用突变 setTTL 作为突变请求(例如:Appends、Increments、Puts)的属性提交的。
单元格TTL以毫秒为单位而不是秒;
单元格TTL不能将一个单元的有效生命周期延长超过 ColumnFamily 级 TTL 设置.
设置TTL 创建表的时候指定
create 't_task_log',{NAME => 'cf', TTL=>'86400'}

查看TTL
desc "t_task_log" TTL => 'FOREVER'
修改TTL
禁用表disable "t_task_log"
设置TTL值,作用于列族 cf 
alter "t_task_log",NAME=>'cf',TTL=>'86400'
恢复表enable  "t_task_log"
高版本hbase可以不需要先禁用表,可直接在线修改TTL.

创建一个测试表,并添加列族cf
TableName tableName = TableName.valueOf("test");
TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder("cf".getBytes()).build())
.build();admin.createTable(tableDescriptor);
 
2.为当前的表添加一个ttl的列族(默认设定时间为10秒)
ColumnFamilyDescriptor cfDesc = ColumnFamilyDescriptorBuilder.newBuilder("ttl-cf".getBytes()).setTimeToLive(10)
  .build();admin.addColumnFamily(tableName, cfDesc);
System.out.println("为表添加一个具有TTL的列族ttl-cf,设定超时时间为10s");
编码设置单元TTL
Put put = new Put(Bytes.toBytes("row1"));
put.setTTL(86400L);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值