zoukankan      html  css  js  c++  java
  • Hbase shell详情

    HBase 为用户提供了一个非常方便的使用方式, 我们称之为“HBase Shell”。
    HBase Shell 提供了大多数的 HBase 命令, 通过 HBase Shell 用户可以方便地创建、删除及修改表, 还可以向表中添加数据、列出表中的相关信息等。
    备注:写错 HBase Shell 命令时用键盘上的“Delete”进行删除,“Backspace”不起作用。
    在启动 HBase 之后,用户可以通过下面的命令进入 HBase Shell 之中,命令如下所示:

    hadoop@ubuntu:~$ hbase shell
    HBase Shell; enter 'help' for list of supported commands.
    Type "exit" to leave the HBase Shell
    Version 0.94.3, r1408904, Wed Nov 14 19:55:11 UTC 2012
    
    hbase(main):001:0> 

    具体的 HBase Shell 命令如下表 1.1-1 所示:

    hbase shell命令                             描述 
    alter 修改列族(column family)模式
    count 统计表中行的数量
    create 创建表
    describe 显示表相关的详细信息
    delete 删除指定对象的值(可以为表,行,列对应的值,另外也可以指定时间戳的值)
    deleteall 删除指定行的所有元素值
    disable 使表无效
    drop 删除表
    enable 使表有效
    exists 测试表是否存在
    exit 退出hbase shell
    get 获取行或单元(cell)的值
    incr 增加指定表,行或列的值
    list 列出hbase中存在的所有表
    put 向指向的表单元添加值
    tools 列出hbase所支持的工具
    scan 通过对表的扫描来获取对用的值
    status 返回hbase集群的状态信息
    shutdown 关闭hbase集群(与exit不同)
    truncate 重新创建指定表
    version 返回hbase版本信息

    下面我们将以“一个学生成绩表”的例子来详细介绍常用的 HBase 命令及其使用方法。


    这里 grad 对于表来说是一个列,course 对于表来说是一个列族,这个列族由三个列组成 china、math 和 english,当然我们可以根据我们的需要在 course 中建立更多的列族,如computer,physics 等相应的列添加入 course 列族。(备注:列族下面的列也是可以没有名字的。)

    create 命令

    创建一个具有两个列族“grad”和“course”的表“scores”。其中表名、行和列都要用单引号括起来,并以逗号隔开。

    hbase(main):012:0> create 'scores', 'name', 'grad', 'course'

     
    create 'subject_test_h2h', {NAME => 'cf1', BLOOMFILTER => 'ROW', VERSIONS => '20', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', COMPRESSION => 'SNAPPY', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'},SPLITS=>['1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
    

    list 命令

    查看当前 HBase 中具有哪些表。

    hbase(main):012:0> list

    describe 命令

    查看表“scores”的构造。

    hbase(main):012:0> describe 'scores'

    put 命令

    使用 put 命令向表中插入数据,参数分别为表名、行名、列名和值,其中列名前需要列族最为前缀,时间戳由系统自动生成。
    格式: put 表名,行名,列名([列族:列名]),值
    例子:

    加入一行数据,行名称为“xiapi”,列族“grad”的列名为”(空字符串)”,值位 1。

    hbase(main):012:0> put 'scores', 'xiapi', 'grad:', '1'
    hbase(main):012:0> put 'scores', 'xiapi', 'grad:', '2' --修改操作(update)

    给“xiapi”这一行的数据的列族“course”添加一列“<china,97>”。

    hbase(main):012:0> put 'scores', 'xiapi',  'course:china', '97'
    hbase(main):012:0> put 'scores', 'xiapi',  'course:math', '128'
    hbase(main):012:0> put 'scores', 'xiapi',  'course:english', '85'

    get 命令

    查看表“scores”中的行“xiapi”的相关数据。

    hbase(main):012:0> get 'scores', 'xiapi'

    查看表“scores”中行“xiapi”列“course :math”的值。

    hbase(main):012:0> get 'scores', 'xiapi', 'course :math'

    或者

    hbase(main):012:0> get 'scores', 'xiapi', {COLUMN=>'course:math'}
    hbase(main):012:0> get 'scores', 'xiapi', {COLUMNS=>'course:math'}

    备注:COLUMN 和 COLUMNS 是不同的,scan 操作中的 COLUMNS 指定的是表的列族, get操作中的 COLUMN 指定的是特定的列,COLUMNS 的值实质上为“列族:列修饰符”。COLUMN 和 COLUMNS 必须为大写。

    scan 命令

    查看表“scores”中的所有数据。

    hbase(main):012:0> scan 'scores'

    注意:
    scan 命令可以指定 startrow,stoprow 来 scan 多个 row。
    例如:

    scan 'user_test',{COLUMNS =>'info:username',LIMIT =>10, STARTROW => 'test', STOPROW=>'test2'}

    查看表“scores”中列族“course”的所有数据。

    hbase(main):012:0> scan  'scores', {COLUMN => 'grad'}
    hbase(main):012:0> scan  'scores', {COLUMN=>'course:math'}
    hbase(main):012:0> scan  'scores', {COLUMNS => 'course'}
    hbase(main):012:0> scan  'scores', {COLUMNS => 'course'}

    count 命令

    hbase(main):068:0> count 'scores'

    exists 命令

    hbase(main):071:0> exists 'scores'

    incr 命令(赋值)

    delete 命令

    删除表“scores”中行为“xiaoxue”, 列族“course”中的“math”。

    hbase(main):012:0>  delete 'scores', 'xiapi', 'course:math'

    truncate 命令

    hbase(main):012:0>  truncate 'scores'

    disbale、drop 命令

    通过“disable”和“drop”命令删除“scores”表。

    hbase(main):012:0>  disable 'scores' --enable 'scores' 
    hbase(main):012:0>  drop 'scores'

    status命令

    hbase(main):072:0> status

    version命令

    hbase(main):073:0> version

    另外,在 shell 中,常量不需要用引号引起来,但二进制的值需要双引号引起来,而其他值则用单引号引起来。HBase Shell 的常量可以通过在 shell 中输入“Object.constants”。

  • 相关阅读:
    ZOJ 1001 A + B Problem
    献给那些心软的人!!
    将表格的数据插入另一个表格
    把链接 显示为方框
    【ibus】设置ibus输入法(pinyin & sunpinyin)
    [Mongo] How to Install Mongo on Debian(不要安装)
    [Sinatra、Mongo] Mongo
    Sinatra+SQLite3+DataMapper
    [sinatra] Sinatra再入门
    [slim] Slim
  • 原文地址:https://www.cnblogs.com/diandianquanquan/p/11043458.html
Copyright © 2011-2022 走看看