• Hbase 常用Shell命令


    一:Hbase常用Shell命令表

    help                                      查看命令的使用描述 help '命令名'
    whoami 身份(root、user) whoami
    version 返回hbase版本信息 version
    status 返回hbase集群的状态信息 status
    table_help 查看如何操作表 table_help
    create 创建表 create '表名', '列族名1', '列族名2', '列族名N'
    alter 修改列族 添加列族:alter '表名', NAME=>'列族名'
    删除列族:alter '表名', {NAME=> '列族名', METHOD=> 'delete'}
    describe 显示表相关的详细信息 describe '表名'
    list 列出hbase中存在的所有表 list
    exists 测试表是否存在 exists '表名'
    put 添加或修改的表的值 put '表名', '行键', '列族名', '列值'
    put '表名', '行键', '列族名:列名', '列值'
    scan 通过对表的扫描来获取对用的值 scan '表名'
    扫描某个列族:scan '表名',{COLUMN=>'列族名',FORMATTER =>'toString'}
    扫描某个列族的某个列:scan '表名', {COLUMN=>'列族名:列名'}
    查询同一个列族的多个列: scan '表名', {COLUMNS => [ '列族名1:列名1', '列族名1:列名2' …]}
    get 获取行或单元(cell)的值 get '表名', '行键'
    get '表名', '行键', '列族名'
    count 统计表中行的数量 count '表名'
    incr 增加指定表行或列的值 incr '表名', '行键', '列族:列名', 步长值
    get_counter 获取计数器 get_counter '表名', '行键', '列族:列名'
    delete 删除指定对象的值(可以为表,行,列对应的值,另外也可以指定时间戳的值) 删除列族的某个列: delete 表名', '行键', '列族名:列名'
    deleteall 删除指定行的所有元素值 deleteall '表名', '行键'
    truncate 重新创建指定表(清空表) truncate '表名'
    enable 使表有效 enable '表名'
    is_enabled 是否启用 is_enabled '表名'
    disable 使表无效(删除表之前先禁用) disable '表名'
    is_disabled 是否无效 is_disabled '表名'
    drop 删除表 drop的表必须是disable的
    disable '表名'
    drop '表名'
    shutdown 关闭hbase集群(与exit不同)  
    tools 列出hbase所支持的工具  
    exit 退出hbase shell

    二:Hbase操作

    DDL操作

    (1) 查看数据库中有哪些表

    hbase(main):005:0> list
    TABLE
    person

    (2) 查看表属性信息

    复制代码
    hbase(main):007:0> describe 'person'
    # 或者
    hbase(main):007:0> desc 'person'
    
    Table person is ENABLED
    person
    COLUMN FAMILIES DESCRIPTION
    {
    NAME => 'age', 
    BLOOMFILTER => 'ROW', 
    VERSIONS => '1', 
    IN_MEMORY => 'false', 
    KEEP_DELETED_CELLS => 'FALSE', 
    DATA_BLOCK_ENCODING => 'NONE', 
    TTL => 'FOREVER', 
    COMPRESSION => 'NONE', 
    MIN_VERSIONS => '0', 
    BLOCKCACHE => 'true', 
    BLOCKSIZE => '65536', 
    REPLICATION_SCOPE => '0'
    }                                                     
    
    # 其中的属性的意义:
    NAME:列族名
    VERSIONS:最大版本号
    MIN_VERSIONS:最小版本号
    TTL(Time To Live):存活时间
    IN_MEMORY:是否开启缓存,默认false,应该开启,否则与BLOCKCACHE冲突
    BLOCKCACHE:读缓存是否开启,默认开启,64M
    复制代码

    (3) 建表

    # create '表名', '列族1', '列族2'...
    hbase(main):002:0> create 'person', 'name', 'age'
    # 等价于
    hbase(main):002:0> create 'person',{NAME=>'name' },{NAME=>'age'}
    # 建表时可以指定表属性信息
    hbase(main):005:0> create 'user_info',{NAME=>'base_info',VERSIONS=>3 },{NAME=>'extra_info',IN_MEMORY=>'true'} 

    (4) alter 修改表

    复制代码
    --(1) 增加列族
    alter 'table_name', 'add_family'
    # 或者
    alter 'table_name', {NAME => 'add_family'}
    # 当然,新增加的列可以设置属性,比如
    alter 'table_name', {NAME => 'add_family', VERSIONS => 3}
    
    --(2) 删除列族
    alter 'table_name', {NAME => 'delete_family', METHOD => 'delete'}
    或者
    alter 'table_name', 'delete' => 'delete_family'
    
    --(3) 添加列族f1同时删除列族f2
    alter 'user', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}
    
    --(4) 修改列族
    # 将user表的f1列族版本号改为5
    alter 'user', NAME => 'f1', VERSIONS => 5
    复制代码

    (5) 判断表是否存在

    exists 'table_name'

    (6) 禁用表与启用表

    复制代码
    --(1) 禁用表
    disable 'table_name'
    --(2) 查看表是否禁用
    is_disabled 'table_name'
    --(3) 启用表
    enable 'table_name'
    --(4) 查看表是否启用
    is enabled 'table_name'
    复制代码

    (7) 删除表

    # hbase的某些版本,在删除表前,需要先禁用表
    disable 'table_name'
    drop 'table_name'

    DML 操作

    (1) 插入数据

    --(1) 
    # put '表名','rowkey','列族名:列名',''
    put 'person','0001','name:firstname', 'Jed'
    --(2) 可以指定时间戳,否则默认为系统当前时间
    put 'person','0002','info:age',20,1482077777778

    (2) 查询某行

    复制代码
    --(1) 
    get 'person', '0001'
    --(2) 查询某行,指定列名
    get 'person', '0001', 'name:firstname'
    --(3) 查询某行,添加其他限制条件
    # 查询person表中,rowkey为'0001'的这一行,只显示name:firstname这一列,并且只显示最新的3个版本
    get 'person', '0001', {COLUMNS => 'name:firstname', VERSIONS => 3}
    # 查看指定列的内容,并限定显示最新的3个版本和时间范围 
    get 'person', '0001', {COLUMN => 'name:first', VERSIONS => 3, TIMERANGE => [1392368783980, 1392380169184]}
    # 查询person表中,rowkey为'rk0001',且某列的内容为'中国'的记录
    scan'person', 'rk0001', {FILTER => "ValueFilter(=, 'binary:中国')"}
    复制代码

    (3) 全表扫描

    复制代码
    --(1) 扫描全表
    scan 'person'
    --(2) 扫描时指定列族
    scan 'person', {COLUMNS => 'name'}
    --(3) 扫描时指定列族,并限定显示最新的5个版本的内容
    scan 'person', {COLUMNS => 'name', VERSIONS => 5}
    --(4) 设置开启Raw模式,开启Raw模式会把那些已添加删除标记但是未实际删除的数据也显示出来
    scan 'person', {COLUMNS => 'name', RAW => true}
    --(5) 列的过滤
    # 查询user表中列族为info和data的信息
    scan 'user', {COLUMNS => ['info', 'data']}
    # 查询user表中列族为info,列名为name、列族为data,列名为pic的信息
    scan 'user', {COLUMNS => ['info:name', 'data:pic']}
    # 查询user表中列族为info,列名为name的信息,并且版本最新的5个
    scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}
    # 查询user表中列族为info和data且列名含有a字符的信息
    scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}
    # 查询user表中列族为info,rk范围是[rk0001, rk0003)的数据
    scan 'people', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}
    # 查询user表中row key以rk字符开头的
    scan 'user',{FILTER=>"PrefixFilter('rk')"}
    # 查询user表中指定时间范围的数据
    scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}
    scan的用法很多,参数,过滤条件可以很多,各种组合, 在此不列举过多的例子,参考 help 'scan'
    复制代码

    (4) 删除数据

    delete 'table_name', 'rowkey', 'family:column'

    (5) 清空表

    转载于https://www.cnblogs.com/wendi/p/14158541.html

    truncate 'table_name'
  • 相关阅读:
    Jenkins job 之间实现带参数触发
    svn hooks post-commit钩子自动部署
    Ubuntu PPA软件源
    图片文字OCR识别-tesseract-ocr
    scala 学习笔记十 元组
    scala 学习笔记九 定义操作符
    scala 学习笔记八 简洁性
    scala 学习笔记七 基于类型的模式匹配
    scala 学习笔记六 推导
    scala 学习笔记五 foreach, map, reduce
  • 原文地址:https://www.cnblogs.com/ljpljm/p/14204044.html
Copyright © 2020-2023  润新知