Hbase的表属性①

一)、
1.namespace  //相当于databases
namespace        databases
-》tables   》tables
默认情况下有两个命令空间
》default
默认不指定命令空间的表都放在此命令空间下
》hbase
meta          //存放元数据
namespace     //存放命令空间


2.hbase 使用help
//查看命令的信息
hbase(main):007:0> help
//查看指定命令的用法  help   “COMMANDS” 
hbase(main):007:0> help "list_namespace"
eg:
hbase> list_namespace
  hbase> list_namespace 'abc.*'


  3.创建命名空间
  hbase> create_namespace 'ns1'


  方式一(简写方式)
   create 'ns1:t1','cf1'
    方式二  //相互等同
   create  'ns1:t2' ,{NAME => 'F1'}


   //查看某个命令空间下的表
   list_namespace_tables   'hbase'
   TABLE         meta  


   4.SPLITS  //指定预分区
   创建表时,多创建一些region(根据表的数据RowKey,结合业务)
   region划分于rowkey,

  
    1)创建表时指定预分区
    create  'ns1:jindong','info',SPLITS => ['201606010900', '201609010900', '201612010900']
    结合Web界面理解


    2)创建表时通过文本指定预分区   类似于 hive -f
    create  'ns1:taobao','info',SPLITS_FILE => '/home/user01/splits.txt'


    3) create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}


   5 RowKey的设计
    1)rowkey是唯一的,不能重复 
2)rowkey的长度不超过10-100个字节,实际生产环境中不建议超过8-16个字节
    3)符合业务需求,而且尽量满足更多的业务(这个是重点,可以将一行信息中多个字段合并成一个ROWKEWY,后面查询主要通过ROWkey,可以进行一定的过滤和切割)
    4).避免数据热点【散列原则】


    ##解决方案一:【散列原则】
    生成一个在一定范围内的随机rowkey
    ##解决方案二:字符串反转
    手机号
    反转之前反转之后
    134....0  0
    151....1    1
    171....5        2
    188....7        9
 切分rowkey( 3 5 7 8) 切分rowkey( 0~9)


  6.创建带有多个版本号的表(可以有效的控制过期数据内存占有率)
  create 'ns1:t2', {NAME => 'cf1', VERSIONS => 5}
  put 'ns1:t2','rk01','cf1:name','zhaoliyin'




  get 'ns1:t2','rk01',{COLUMN => 'cf1:name', VERSIONS => 5}


  COLUMN           CELL                                       
 cf1:name        timestamp=1483604304280, value=gaoyuanyuan 
 cf1:name        timestamp=1483604271409, value=yangmi      
 cf1:name        timestamp=1483604304280, value=zhaoli      
 cf1:name        timestamp=1483604235269, value=zhaoliyin

scan 'ns1:t2',{VERSIONS => 2}

scan 'ns1:t2',{TIMERANGE  => [1483604304280,1483604235269]}

7.修改失效时间
默认:TTL => 'FOREVER' 修改后:TTL => '20 SECONDS '
alter 'ns1:t2',{NAME => 'cf1',TTL => '20'}




8.修改列簇版本号
alter 'ns1:t2',{NAME => 'course',VERSIONS => '1'}


9.增加或删除表的列簇
增加一个列簇
alter 'ns1:t2',NAME => 'info',VERSION => '1'

删除一个列簇
alter 'ns1:t2',NAME => 'info', METHOD => 'delete'   或者 alter 'ns1:t2','delete' => 'info'


10.通过指定列族的IN_MEMORY=true属性,来让该列族的数据缓存在内存中,以提高查询性能。一些保存元数据的小表可以使用该属性来提升性能。
a.创建table的时候可以指定列族的属性
create 'test',{NAME => 'info',IN_MEMORY => true}
b.alter修改
alter 'ns1:t2',{NAME => 'course',IN_MEMORY => 'true'}



.在shell环境中导java包
eg:查看命令空间的创建时间
scan 'hbase:namespace'
ROW               COLUMN+CELL                                     
 default          column=info:d, timestamp=1498708235968, value=\x
                  0A\x07default                                   
 hbase            column=info:d, timestamp=1498708236009, value=\x
                  0A\x05hbase                                     
 nsa              column=info:d, timestamp=1498724729409, value=\x
                  0A\x03nsa

import java.util.Date
Date.new(1498724729409).toString()

11.MIN_VERSIONS
TTL设定之后 MIN_VERSIONS=>'0' 这样设置之后,TTL时间戳过期后,将全部彻底删除该family 下所有的数据,如果MIN_VERSIONS 不等于0 那将保留最新
     的MIN_VERSIONS个版本的数据,其它的全部删除,比如MIN_VERSIONS=>'1' 届时将保留一个最新版本的数据,其它版本的数据将不再保存。







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值