zoukankan      html  css  js  c++  java
  • hadoop中HBase子项目入门讲解

     HBase 是Hadoop的一个子项目,HBase采用了Google BigTable的稀疏的,面向列的数据库实现方式的理论,建立在hadoop的hdfs上,一方面里用了hdfs的高可靠性和可伸缩行,另外一方面里用 了BigTable的高效数据组织形式.可以说HBase为海量数据的real-time相应提供了很好的一个开源解决方案。

            HBase提供了一个类似于mysql等关系型数据库的hbase shell,通过该hbase shell可以对HBase的内的相关表、列族等进行操作;HBase shell的help命令比较详细的列介绍了HBase所支持的命令.具体使用方法可以参见其API文档。

            在这里简单举个学生表scores的案例进行讲解,表数据如下:
    name grad      course:math   course:english
    Tom    1      89           97
    Jerry  2          100          90

            这里grad对于表来说是一个列,course对于表来说是一个列族,这个列族由两个列组成:math和english,当然我们可以根据我们的需要在course中建立更多的列族,如computer,physics,art等相应的列添加入course列族中。

    下面列出常使用的hbase shell 命令如下:

    名称
        

    命令表达式

    创建表
        

    create '表名称', '列名称1','列名称2','列名称N'

    添加记录      
        

    put '表名称', '行名称', '列名称:', '值'

    查看记录
        

    get '表名称', '行名称'

    查看表中的记录总数
        

    count  '表名称'

    删除记录
        

    delete  '表名' ,'行名称' , '列名称'

    删除一张表
        

    先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步  drop '表名称'

    查看所有记录
        

    scan "表名称"  

    查看某个表某个列中所有数据
        

    scan "表名称" , ['列名称:']

    更新记录
        

    就是重写一遍进行覆盖



    1、建立一个表格 scores 具有两个列族grad 和courese案例如下:

    hbase(main):002:0> create 'scores', 'grade', 'course'
    0 row(s) in 4.1610 seconds
    

     
    2、查看当先HBase中具有哪些表

    hbase(main):003:0> list
    scores
    1 row(s) in 0.0210 seconds
    


    3、查看表的构造

    hbase(main):004:0> describe 'scores'
    {NAME => 'scores', IS_ROOT => 'false', IS_META => 'false', FAMILIES => [{NAME => 'course', BLOOMFILTER => 'false', IN_MEMORY => 'false', LENGTH => '2147483647', BLOCKCACHE => 'false', VERSIONS => '3', TTL => '-1', COMPRESSION => 'NONE'}, {NAME => 'grade', BLOOMFILTER => 'false', IN_MEMORY => 'false', LENGTH => '2147483647', BLOCKCACHE => 'false', VERSIONS => '3', TTL => '-1', COMPRESSION => 'NONE'}]}
    1 row(s) in 0.0130 seconds
    


    4、 加入一行数据,行名称为 Tom 列族grad的列名为”” 值位1

    hbase(main):005:0> put 'scores', 'Tom', 'grade:', '1'
    0 row(s) in 0.0070 seconds
    


    5、给Tom这一行的数据的列族添加一列 <math,89>

    hbase(main):006:0> put 'scores', 'Tom', 'course:math', '89'
    0 row(s) in 0.0040 seconds


    6、给Tom这一行的数据的列族添加一列 <english,97>

    hbase(main):007:0> put 'scores', 'Tom', 'course:english', '97'
    0 row(s) in 0.0030 seconds


    7、 加入一行数据,行名称为 Jerry 列族grad的列名为”” 值位2

    hbase(main):008:0> put 'scores', 'Jerry', 'grade:', '2'
    0 row(s) in 0.0040 seconds


    8、给Jerry这一行的数据的列族添加一列 <math,100>

    hbase(main):009:0> put 'scores', 'Jerry', 'course:math', '100'
    0 row(s) in 0.0030 seconds


    9、给Jerry这一行的数据的列族添加一列 <english,90>

    hbase(main):010:0> put 'scores', 'Jerry', 'course:english', '90'
    0 row(s) in 0.0050 seconds


    10、查看scores表中Tom的相关数据

    hbase(main):011:0> get 'scores', 'Tom'
    COLUMN                       CELL
     course:english                  timestamp=1224726394286, value=97
     course:math                 timestamp=1224726377027, value=89
     grade:                      timestamp=1224726360727, value=1
    3 row(s) in 0.0070 seconds
    

     
    11、判断表是否enable

    hbase(main):012:0>is_enabled 'scores'
    true
    0 row(s) in 0.0110seconds
    


    12、判断表是否disable

    hbase(main):013:0>is_disabled 'scores'
    false
    0 row(s) in 0.0110seconds
    


    13、删除表scores

    hbase(main):014:0>disable 'scores'
    0 row(s) in 2.0590seconds
     
    hbase(main):030:0>drop 'scores'
    0 row(s) in 1.1070seconds


    14、查询表是否存在

    hbase(main):015:0>exists 'scores'
    Table scores doesexist                                                     
    0 row(s) in 0.1610seconds
    


    15、查看scores表中所有数据

    hbase(main):016:0> scan 'scores'
    ROW                          COLUMN+CELL
     Tom                         column=course:english, timestamp=1224726394286, value=97
     Tom                         column=course:math, timestamp=1224726377027, value=89
     Tom                         column=grade:, timestamp=1224726360727, value=1
     Jerry                        column=course:english, timestamp=1224726424967, value=90
     Jerry                        column=course:math, timestamp=1224726416145, value=100
     Jerry                        column=grade:, timestamp=1224726404965, value=2
    6 row(s) in 0.0410 seconds
    

     
    16、查看scores表中所有数据courses列族的所有数据

    hbase(main):017:0> scan 'scores', ['course:']
    ROW                          COLUMN+CELL
     Tom                         column=course:english, timestamp=1224726394286, value=97
     Tom                         column=course:math, timestamp=1224726377027, value=89
     Jerry                        column=course:english, timestamp=1224726424967, value=90
     Jerry                        column=course:math, timestamp=1224726416145, value=100
    4 row(s) in 0.0200 seconds

    来源:http://www.yoodb.com/article/display/146

  • 相关阅读:
    HDU 5818 Joint Stacks
    HDU 5816 Hearthstone
    HDU 5812 Distance
    HDU 5807 Keep In Touch
    HDU 5798 Stabilization
    HDU 5543 Pick The Sticks
    Light OJ 1393 Crazy Calendar (尼姆博弈)
    NEFU 2016省赛演练一 I题 (模拟题)
    NEFU 2016省赛演练一 F题 (高精度加法)
    NEFU 2016省赛演练一 B题(递推)
  • 原文地址:https://www.cnblogs.com/MrYoodb/p/4236131.html
Copyright © 2011-2022 走看看