zoukankan      html  css  js  c++  java
  • HBase Shell相关

    1.进入hbase命令行

    ./hbase shell

    2.基本命令

      显示hbase中的表List

    list

      查询user表中的所有信息Scan

    scan 'users'

      清空user表中的数据Truncate (等同于disable + drop + create) 

    truncate 'users'

       删除表Drop

    disable 'user'
    drop 'user'

    3.修改表结构

     首先停用user表(新版本不用)disable 'user',最后再启用表 enable 'user'

      添加新的列族f1

    alter 'user',NAME =>'f1'

      删除一个列族f1(不指定METHOD,则默认为添加列族

    alter 'user', NAME => 'f1', METHOD => 'delete' 
    或者
    alter 'user', 'delete' => 'f1'

      添加列族f1同时删除列族f2

    alter 'user', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}

      将user表的f1列族版本号改为5

    alter 'people', NAME => 'info', VERSIONS => 5

    4.创建表
      创建user表,包含info、data两个列族

    create 'user', 'info', 'data'
    create 'user', {NAME => 'info', VERSIONS => '3'},{NAME => 'data', VERSIONS => '3'}

    5.删除数据
      删除user表row key为rk0001,列标示符为info:name的数据

    delete 'user', 'rk0001', 'info:name'

      删除user表row key为rk0001,列标示符为info:name,timestamp为1392383705316的数据

    delete 'user', 'rk0001', 'info:name', 1392383705316

    6.增加数据

      向user表中插入信息,row key为rk0001,列族info中添加name列标示符,值为zhangsan

    put 'user', 'rk0001', 'info:name', 'zhangsan'

    7.查找数据
      获取user表中row key为rk0001的所有信息

    get 'user', 'rk0001'

      获取user表中row key为rk0001,info列族的所有信息

    get 'user', 'rk0001', 'info'

      获取user表中row key为rk0001,info列族的name、age列标示符的信息

    get 'user', 'rk0001', 'info:name', 'info:age'

      获取user表中row key为rk0001,info和data两个列族的信息

    get 'user', 'rk0001', 'info', 'data'
    get 'user', 'rk0001', {COLUMN => ['info', 'data']}
    get 'user', 'rk0001', {COLUMN => ['info:name', 'data:pic']}

      获取user表中row key为rk0001,列族为info,版本号最新5个的信息

    get 'user', 'rk0001', {COLUMN => 'info', VERSIONS => 5}
    get 'user', 'rk0001', {COLUMN => 'info:name', VERSIONS => 5}

      //通过时间戳的范围查找数据cell,TIMERANGE=>[t1,t2] 是包含t1但不包含t2的时间段

      //scan后面只有两个参数,只能跟 Table_Name + 限制条件

    get 'user', 'rk0001', {COLUMN => 'info:name', VERSIONS => 5, TIMERANGE => [1392368783980, 1392380169184]} 
    scan
    'user', {TIMERANGE => [1392368783980, 1392380169184]}

      //查询user表中列族为info,RowKey范围是[rk0001, rk0003)的数据不能使用get

    scan 'people', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}

      //设置cell只保存3个VERSION版本,旧的多余的就会被覆盖掉

      //但是使用以下命令,还是会查询出5个版本,这是因为旧的版本会被打上删除标记,但在内存中,还未flush
      //当hbase重启之后,被打上标记的记录,则不会在被查到

      //RAW => true表示只能对列族COLUMNS => 'info'有效,对于COLUMNS => 'info:age' 则报错

    scan 'users', {COLUMNS => 'info', RAW => true, VERSIONS => 5}

       //查询user表中RowKey以rk字符开头的【FILTER关键字】

    scan 'user',{FILTER=>"PrefixFilter('rk')"}

      //获取二进制binary的值为“中国”的cell

      //这是因为汉字存储在hbase中,是以二进制的形式存储【ValueFilter】

    put 'user', 'rk0002', 'info:nationality', '中国'
    get 'user', 'rk0002', {FILTER => "ValueFilter(=, 'binary:中国')"}

      //获取user表中RowKey为rk0001,列标示符过滤器(QualifierFilter),即列名中含有a的信息

    get 'people', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:a'))"}

      //查询user表中列族为info和data且列标示符中含有a字符的信息

    scan 'people', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}
  • 相关阅读:
    完了!生产事故!几百万消息在消息队列里积压了几个小时!
    crontab详解
    系统架构中为什么要引入消息中间件
    Linux常用命令
    什么是JWT(JSON WEB TOKEN)
    API接口安全性设计
    MySQLDump在使用之前一定要想到的事情
    api接口安全以及https
    shell study
    linux中注册系统服务—service命令的原理通俗
  • 原文地址:https://www.cnblogs.com/skyl/p/4801997.html
Copyright © 2011-2022 走看看