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

  • 相关阅读:
    用命令行工具安装 卸载 设置 .Net服务
    oracle imp 数据时实现插入到表中 不覆盖
    Oracle导出 Exp的使用
    Linux下的tar压缩解压缩命令详解
    设计模式 配置器
    设计模式 概括说明
    设计模式 创建型模式
    设计模式 组成 & 装饰 & 外观
    设计模式 单件 & 原型
    设计模式 享元 & 代理
  • 原文地址:https://www.cnblogs.com/MrYoodb/p/4236131.html
Copyright © 2011-2022 走看看