zoukankan      html  css  js  c++  java
  • 大数据基础---HBase Shell命令操作

    学习方法

    • 可以参考官方文档的简单示例来 点击查看

    • 可以直接在控制台使用help命令查看

      例如直接使用help命令:

      从上图可以看到,表结构的操作,表数据的操作都展示了。接下来我们可以针对具体的命令使用help查看,比如:alter

      alter help

      从图中可以看到,你可以更改列族,可以使用区域复制,可以更改多个列,当然现在只是大概看下,接下来会带领大家实际操练,大家一定要勤于动手呦~

    一、基本命令

    打开 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(限制查询结果行数),STARTROWROWKEY 起始行,会先根据这个 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')"
    

    系列传送门

  • 相关阅读:
    Apache Ant 1.9.1 版发布
    Apache Subversion 1.8.0rc2 发布
    GNU Gatekeeper 3.3 发布,网关守护管理
    Jekyll 1.0 发布,Ruby 的静态网站生成器
    R语言 3.0.1 源码已经提交到 Github
    SymmetricDS 3.4.0 发布,数据同步和复制
    beego 0.6.0 版本发布,Go 应用框架
    Doxygen 1.8.4 发布,文档生成工具
    SunshineCRM 20130518发布,附带更新说明
    Semplice Linux 4 发布,轻量级发行版
  • 原文地址:https://www.cnblogs.com/shun7man/p/11911254.html
Copyright © 2011-2022 走看看