• HBase常用 Shell 命令


    一、基本命令

    打开Hbase Shell:

    hbase shell

    1.1 获取帮助

    # 获取帮助
    help
    # 获取命令的详细信息
    help 'status'

    1.2 查看服务器状态

    status

    1.3 查看版本信息

    version

    二、关于表的操作

    2.1 查看所有表

    list

    2.2 创建表

    命令格式: create ‘表名称’, ‘列族名称1’,‘列族名称2’,‘列名称N’

    # 创建一张名为Student的表,包含基本信息(baseInfo)、学校信息(schoolInfo)两个列族
    create 'Student','baseInfo','schoolInfo'

    2.3 查看表的基本信息

    命令格式:desc ‘表名’

    describe 'Student'

    2.4 表的启用/禁用

    enable和disable可以启用/禁用这个表,is_enabled和is_disabled来检查表是否被禁用

    # 禁用表
    disable 'Student'
    # 检查表是否被禁用
    is_disabled 'Student'
    # 启用表
    enable 'Student'
    # 检查表是否被启用
    is_enabled 'Student'

    2.5 检查表是否存在

    exists 'Student'

    2.6 删除表

    # 删除表前需要先禁用表
    disable 'Student'
    # 删除表
    drop 'Student'

    三、增删改

    3.1 添加列族

    命令格式: alter ‘表名’, ‘列族名’

    alter 'Student', 'teacherInfo'

    3.2 删除列族

    命令格式:alter ‘表名’, {NAME => ‘列族名’, METHOD => ‘delete’}

    alter 'Student', {NAME => 'teacherInfo', METHOD => 'delete'}

    3.3 更改列族存储版本的限制

    默认情况下,列族只存储一个版本的数据,如果需要存储多个版本的数据,则需要修改列族的属性。修改后可通过desc命令查看。

    alter 'Student',{NAME=>'baseInfo',VERSIONS=>3}

    3.4 插入数据

    命令格式:put ‘表名’, ‘行键’,‘列族:列’,‘值’

    注意:如果新增数据的行键值、列族名、列名与原有数据完全相同,则相当于更新操作

    put 'Student', 'rowkey1','baseInfo:name','tom'
    put 'Student', 'rowkey1','baseInfo:birthday','1990-01-09'
    put 'Student', 'rowkey1','baseInfo:age','29'
    put 'Student', 'rowkey1','schoolInfo:name','Havard'
    put 'Student', 'rowkey1','schoolInfo:localtion','Boston'

    put 'Student', 'rowkey2','baseInfo:name','jack'
    put 'Student', 'rowkey2','baseInfo:birthday','1998-08-22'
    put 'Student', 'rowkey2','baseInfo:age','21'
    put 'Student', 'rowkey2','schoolInfo:name','yale'
    put 'Student', 'rowkey2','schoolInfo:localtion','New Haven'

    put 'Student', 'rowkey3','baseInfo:name','maike'
    put 'Student', 'rowkey3','baseInfo:birthday','1995-01-22'
    put 'Student', 'rowkey3','baseInfo:age','24'
    put 'Student', 'rowkey3','schoolInfo:name','yale'
    put 'Student', 'rowkey3','schoolInfo:localtion','New Haven'

    put 'Student', 'wrowkey4','baseInfo:name','maike-jack'

    3.5 获取指定行、指定行中的列族、列的信息

    # 获取指定行中所有列的数据信息
    get 'Student','rowkey3'
    # 获取指定行中指定列族下所有列的数据信息
    get 'Student','rowkey3','baseInfo'
    # 获取指定行中指定列的数据信息
    get 'Student','rowkey3','baseInfo:name'

    3.6 删除指定行、指定行中的列

    # 删除指定行
    delete 'Student','rowkey3'
    # 删除指定行中指定列的数据
    delete 'Student','rowkey3','baseInfo:name'

    四、查询

    hbase中访问数据有两种基本的方式:

    按指定rowkey获取数据:get方法;
    按指定条件获取数据:scan方法。
    scan可以设置begin和end参数来访问一个范围内所有的数据。get本质上就是begin和end相等的一种特殊的scan。

    4.1Get查询

    # 获取指定行中所有列的数据信息
    get 'Student','rowkey3'
    # 获取指定行中指定列族下所有列的数据信息
    get 'Student','rowkey3','baseInfo'
    # 获取指定行中指定列的数据信息
    get 'Student','rowkey3','baseInfo:name'

    4.2 查询整表数据

    scan 'Student'

    4.3 查询指定列簇的数据

    scan 'Student', {COLUMN=>'baseInfo'}

    4.4 条件查询

    # 查询指定列的数据
    scan 'Student', {COLUMNS=> 'baseInfo:birthday'}

    除了列(COLUMNS)修饰词外,HBase还支持Limit(限制查询结果行数),STARTROW(ROWKEY起始行,会先根据这个key定位到region,再向后扫描)、STOPROW(结束行)、TIMERANGE(限定时间戳范围)、VERSIONS(版本数)、和FILTER(按条件过滤行)等。

    如下代表从rowkey2这个rowkey开始,查找下两个行的最新3个版本的name列的数据

    scan 'Student', {COLUMNS=> 'baseInfo:name',STARTROW => 'rowkey2',STOPROW => 'wrowkey4',LIMIT=>2, VERSIONS=>3}

    4.5 条件过滤

    Filter可以设定一系列条件来进行过滤。如我们要查询值等于24的所有数据:

    scan 'Student', FILTER=>"ValueFilter(=,'binary:24')"

    值包含yale的所有数据:

    scan 'Student', FILTER=>"ValueFilter(=,'substring:yale')"

    列名中的前缀为birth的:

    scan 'Student', FILTER=>"ColumnPrefixFilter('birth')"

    FILTER中支持多个过滤条件通过括号、AND和OR进行组合:

    # 列名中的前缀为birth且列值中包含1998的数据
    scan 'Student', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1998')"

    PrefixFilter用于对Rowkey的前缀进行判断:

    scan 'Student', FILTER=>"PrefixFilter('wr')"
    ————————————————

    版权声明:本文为CSDN博主「hei bai ying」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/m0_37809146/article/details/91128061

  • 相关阅读:
    C++公有派生
    Android学习笔记(十二)——实战:制作一个聊天界面
    Android学习笔记(十一)——ListView的使用(下)
    Android学习笔记(十)——ListView的使用(上)
    Android学习笔记(九)——布局和控件的自定义
    【Leetcode周赛】从contest-41开始。(一般是10个contest写一篇文章)
    算法群模拟面试记录
    【Leetcode周赛】从contest-51开始。(一般是10个contest写一篇文章)
    【服务端开发-杂】REST 和 Graphql
    【Kickstart】2017 Round (Practice ~ G)
  • 原文地址:https://www.cnblogs.com/snailgirl/p/14553486.html
Copyright © 2020-2023  润新知