精华内容
下载资源
问答
  • hbase常用命令操作

    千次阅读 2021-02-20 14:55:08
    进入HBase客户端命令操作界面 $ bin/hbase shell 显示服务器状态 查看当前服务器状态 hbase> status 查看指定服务器状态 hbase> status ‘主机名’ 显示HBase 当前用户 whoami 查看帮助命令 hbase(main):001...

    进入HBase客户端命令操作界面

    $ bin/hbase shell

    显示服务器状态

    查看当前服务器状态
    hbase> status

    查看指定服务器状态
    hbase> status ‘主机名’
    在这里插入图片描述

    显示HBase 当前用户

    whoami
    在这里插入图片描述

    查看帮助命令

    hbase(main):001:0> help

    命名空间

    列出所有命名空间

    hbase> list_namespace
    在这里插入图片描述

    新建命名空间

    hbase> create_namespace ‘ns1’
    在这里插入图片描述
    在这里插入图片描述

    删除命名空间

    hbase> drop_namespace ‘ns1’
    在这里插入图片描述

    该命名空间必须为空,否则会报错。

    修改命名空间

    hbase> alter_namespace ‘ns2’, {METHOD => ‘set’, ‘PROPERTY_NAME’ => ‘PROPERTY_VALUE’}
    在这里插入图片描述

    查看当前数据库中有哪些表

    hbase(main):002:0> list

    查看表是否存在

    hbase(main):023:0> exists 表名

    hbase(main):023:0> exists “student”
    在这里插入图片描述

    创建一张表

    hbase(main):003:0> create ‘student’,‘info’

    创建多个列族

    hbase> create ‘t1’, {NAME => ‘f1’}, {NAME => ‘f2’}, {NAME => ‘f3’}
    在这里插入图片描述

    禁用一张表

    disable ‘表名’
    在这里插入图片描述

    启用一张表

    enable ‘表名’
    在这里插入图片描述

    查看表是否可用、是否不可用
    is_enabled ‘表名’
    is_disabled ‘表名’
    在这里插入图片描述

    alter

    该命令可以改变表和列族的模式,例如:
    为当前表增加列族:
    hbase> alter ‘hbase_book’, NAME => ‘CF2’, VERSIONS => 2
    在这里插入图片描述

    为当前表删除列族:
    hbase> alter ‘hbase_book’, ‘delete’ => ‘CF2’
    在这里插入图片描述

    向表中存储一些数据

    hbase(main):004:0> put ‘student’,‘1001’,‘info:name’,‘Thomas’
    hbase(main):005:0> put ‘student’,‘1001’,‘info:sex’,‘male’
    hbase(main):006:0> put ‘student’,‘1001’,‘info:age’,‘18’

    扫描查看存储的数据

    hbase(main):007:0> scan ‘student’在这里插入图片描述

    或:查看某个rowkey范围内的数据
    hbase(main):014:0> scan ‘student’,{STARTROW => ‘1001’,STOPROW => ‘1007’}
    在这里插入图片描述

    查看表结构

    hbase(main):009:0> describe ‘student’
    在这里插入图片描述

    更新指定字段的数据

    hbase(main):009:0> put ‘student’,‘1001’,‘info:name’,‘Nick’
    hbase(main):010:0> put ‘student’,‘1001’,‘info:age’,‘100’

    查看更新后的数据:
    在这里插入图片描述

    查看指定行的数据

    hbase(main):012:0> get ‘student’,‘1001’
    在这里插入图片描述

    或:查看指定行指定列或列族的数据
    hbase(main):013:0> get ‘student’,‘1001’,‘info:name’
    在这里插入图片描述

    统计一张表有多少行数据

    hbase(main):020:0> count ‘student’
    在这里插入图片描述

    删除数据

    删除掉某个rowKey中某一列的数据
           hbase(main):016:0> delete 'student','1001','info:sex'
    

    在这里插入图片描述

    删除某一个rowKey全部的数据
            hbase(main):015:0> deleteall 'student','1001'
    

    在这里插入图片描述

    清空表数据

    hbase(main):017:0> truncate ‘student’
    在这里插入图片描述

    修改表名

    HBase没有rename命令,可以通过快照功能修改表名,详见下述。

    删除表

    首先需要先让该表为disable状态,使用命令:
    hbase(main):018:0> disable ‘student’
    在这里插入图片描述

    然后才能drop这个表,使用命令:
    hbase(main):019:0> drop ‘student’

    (尖叫提示:如果直接drop表,会报错:Drop the named table. Table must first be disabled)
    在这里插入图片描述

    快照

    查看快照

    hbase> list_snapshots ‘ns1’
    在这里插入图片描述

    新建快照

    hbase> snapshot ‘sourceTable’, ‘snapshotName’
    在这里插入图片描述在这里插入图片描述

    从快照复制生成一个新表:

    hbase> clone_snapshot ‘snapshotName’, ‘gld:student’
    在这里插入图片描述

    分区

    预分区

    在建表时预分10个区:
    create’customer’,‘info’,{SPLITS=>[‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’]}
    在这里插入图片描述

    则每个分区的Start Key和End Key分别为:(~, 1),[1, 2),[2, 3),[3, 4),[4, 5),[5, 6),[6, 7),[7, 8),[8, 9),[9, ~)
    查看HDFS是可以看到这个表下有10个文件夹(如果没有预分区,则只有一个文件夹):
    在这里插入图片描述

    手动分区

    一开始没有分区:
    在这里插入图片描述

    使用切分键’1’一分为二:
    hbase>split ‘tableName’,‘splitKey’

    hbase>split ‘gld:student’,‘1’
    在这里插入图片描述

    继续将第二个Region进行切分,以’2’作为切分键:

    hbase>split ‘gld:student,1,1538223641947’,‘2’
    在这里插入图片描述

    合并分区

    hbase>merge_region ‘ENCODED_REGIONNAME’,‘ENCODED_REGIONNAME’

    hbase(main):125:0> merge_region ‘e306f74bf37ea659cb1945514698eeaa’ ,‘fbd781060852359d2d52a18b728eac77’
    在这里插入图片描述

    展开全文
  • Hbase Shell命令操作

    2021-10-10 16:04:18
    一、基本操作 1.进入HBase客户端命令行 ...2.查看帮助命令 hbase(main):001:0> help 二、namespace的操作(DDL) 1.查看当前Hbase中有哪些namespace hbase(main):002:0> list_namespace NAMESPACE

    一、基本操作

    1.进入HBase客户端命令行

    [atguigu@hadoop102 hbase]$ bin/hbase shell
    

    2.查看帮助命令

    hbase(main):001:0> help
    

    二、namespace的操作(DDL)

    1.查看当前Hbase中有哪些namespace

    hbase(main):002:0> list_namespace
    
    NAMESPACE                                                                                                                                                                                             
    default(创建表时未指定命名空间的话默认在default下)                                                                                                
    hbase(系统使用的,用来存放系统相关的元数据信息等,勿随便操作)  
    

    2.创建namespace

    hbase(main):010:0>  create_namespace "test"
    
    hbase(main):010:0> create_namespace "test01", {"author"=>"wyh", "create_time"=>"2020-03-10 08:08:08"}
    

    3.查看namespace

    hbase(main):010:0>  describe_namespace "test01"
    

    4.修改namespace的信息(添加或者修改属性)

    hbase(main):010:0> alter_namespace "test01", {METHOD => 'set', 'author' => 'weiyunhui'}
    

    添加或者修改属性:

    alter_namespace 'ns1', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'} 
    

    删除属性:

    alter_namespace 'ns1', {METHOD => 'unset', NAME => ' PROPERTY_NAME '} 
    

    5.删除namespace

    hbase(main):010:0> drop_namespace "test01"
    

    注意: 要删除的namespace必须是空的,其下没有表。

    三、表的操作(DML)

    0.查看当前数据库中有哪些表

    hbase(main):002:0> list
    

    1.创建表

    hbase(main):002:0> create 'student','info'
    

    2.插入数据到表

    hbase(main):003:0> put 'student','1001','info:sex','male'
    hbase(main):004:0> put 'student','1001','info:age','18'
    hbase(main):005:0> put 'student','1002','info:name','Janna'
    hbase(main):006:0> put 'student','1002','info:sex','female'
    hbase(main):007:0> put 'student','1002','info:age','20'
    

    3.扫描查看表数据

    hbase(main):008:0> scan 'student'
    hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW  => '1001'}
    hbase(main):010:0> scan 'student',{STARTROW => '1001'}
    

    4.查看表结构

    hbase(main):011:0> describe 'student'
    

    5.更新指定字段的数据

    hbase(main):012:0> put 'student','1001','info:name','Nick'
    hbase(main):013:0> put 'student','1001','info:age','100'
    

    6.查看“指定行”或“指定列族:列”的数据

    hbase(main):014:0> get 'student','1001'
    hbase(main):015:0> get 'student','1001','info:name'
    

    7.统计表数据行数

    hbase(main):021:0> count 'student'
    

    8.删除数据
    删除某rowkey的全部数据:

    hbase(main):016:0> deleteall 'student','1001'
    

    删除某rowkey的某一列数据:

    hbase(main):017:0> delete 'student','1002','info:sex'
    

    9.清空表数据

    hbase(main):018:0> truncate 'student'
    

    提示:清空表的操作顺序为先disable,然后再truncate。

    10.删除表
    首先需要先让该表为disable状态:

    hbase(main):019:0> disable 'student'
    

    然后才能drop这个表:

    hbase(main):020:0> drop 'student'
    

    提示:如果直接drop表,会报错:ERROR: Table student is enabled. Disable it first.

    11.变更表信息
    将info列族中的数据存放3个版本:

    hbase(main):022:0> alter 'student',{NAME=>'info',VERSIONS=>3}
    hbase(main):022:0> get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
    

    推荐参考:https://monday.blog.csdn.net/article/details/88236575

    展开全文
  • Hbase基础命令

    2021-03-15 09:25:27
    HBase的shell其实JRuby的IRB(交互式的Ruby),但在其中添加了一些HBase命令。 启动HBase shell: hbase shell 4.2.2 创建表 语法: create '表名','列蔟名'... 创建订单表,表名为ORDER_INFO,该表有一个列蔟为...

    4. 常用shell操作

    我们可以以shell的方式来维护和管理HBase。例如:执行建表语句、执行增删改查操作等等。
    4.1 需求
    有以下订单数据,我们想要将这样的一些数据保存到HBase中。
    订单ID 订单状态 支付金额 支付方式ID 用户ID 操作时间 商品分类
    001 已付款 200.5 1 001 2020-5-2 18:08:53 手机;
    接下来,我们将使用HBase shell来进行以下操作:
    1.创建表
    2.添加数据
    3.更新数据
    4.删除数据
    5.查询数据
    4.2 创建表
    在HBase中,所有的数据也都是保存在表中的。要将订单数据保存到HBase中,首先需要将表创建出来。
    4.2.1 启动HBase Shell
    HBase的shell其实JRuby的IRB(交互式的Ruby),但在其中添加了一些HBase的命令。
    启动HBase shell:
    hbase shell
    4.2.2 创建表

    语法:
    create '表名','列蔟名'...
    
    创建订单表,表名为ORDER_INFO,该表有一个列蔟为C1
    create 'ORDER_INFO','C1';
    

    注意:
    create要写成小写
    一个表可以包含若干个列蔟
    命令解析:调用hbase提供的ruby脚本的create方法,传递两个字符串参数
    通过下面链接可以看到每个命令都是一个ruby脚本
    链接
    4.2.3 查看表

    hbase(main):005:0> list
    TABLE                                                                                                                                                                    
    ORDER_INFO                                                                                                                                                               
    1 row(s)
    Took 0.0378 seconds                                                                                                                                                      
    => ["ORDER_INFO"]
    

    4.2.4 删除表
    要删除某个表,必须要先禁用表
    4.2.4.1 禁用表

    语法:disable "表名"
    

    4.2.4.2 删除表

    语法:drop "表名"
    

    4.2.4.3 删除ORDER_INFO表

    disable "ORDER_INFO"
    drop "ORDER_INFO
    

    "
    4.3 添加数据
    4.3.1 需求
    接下来,我们需要往订单表中添加以下数据。

    订单ID	订单状态	支付金额	支付方式ID	用户ID	操作时间	商品分类
    
    ID	STATUS	PAY_MONEY	PAYWAY	USER_ID	OPERATION_DATE	CATEGORY
    000001	已提交	4070	1	4944191	2020-04-25 12:09:16	手机;
    

    4.3.2 PUT操作
    HBase中的put命令,可以用来将数据保存到表中。但put一次只能保存一个列的值。以下是put的语法结构:

    put '表名','ROWKEY','列蔟名:列名','值'
    

    要添加以上的数据,需要使用7次put操作。如下:

    put 'ORDER_INFO','000001','C1:ID','000001'
    put 'ORDER_INFO','000001','C1:STATUS','已提交'
    put 'ORDER_INFO','000001','C1:PAY_MONEY',4070
    put 'ORDER_INFO','000001','C1:PAYWAY',1
    put 'ORDER_INFO','000001','C1:USER_ID',4944191
    put 'ORDER_INFO','000001','C1:OPERATION_DATE','2020-04-25 12:09:16'
    put 'ORDER_INFO','000001','C1:CATEGORY','手机;'
    

    4.4 查看添加的数据
    4.4.1 需求
    要求将rowkey为:000001对应的数据查询出来。
    4.4.2 get命令
    在HBase中,可以使用get命令来获取单独的一行数据。

    语法:
    get '表名','rowkey'
    

    4.4.3 查询指定订单ID的数据

    get 'ORDER_INFO','000001'
    
    COLUMN	CELL         
     C1:CATEGORY       	timestamp=1588415690678, value=\xE6\x89\x8B\xE6\x9C\xBA;             
     C1:OPERATION_DATE 	timestamp=1588415689773, value=2020-04-25 12:09:16                   
     C1:PAYWAY         	timestamp=1588415689681, value=1                                     
     C1:PAY_MONEY      	timestamp=1588415689643, value=4070                                  
     C1:STATUS         	timestamp=1588415689591, value=\xE5\xB7\xB2\xE6\x8F\x90\xE4\xBA\xA4  
     C1:USER_ID        	timestamp=1588415689721, value=4944191                               
    

    4.4.4 显示中文
    在HBase shell中,如果在数据中出现了一些中文,默认HBase shell中显示出来的是十六进制编码。要想将这些编码显示为中文,我们需要在get命令后添加一个属性:{FORMATTER => ‘toString’}
    4.4.4.1 查看订单的数据

    get 'ORDER_INFO','000001', {FORMATTER => 'toString'}
    

    注:
    { key => value},这个是Ruby语法,表示定义一个HASH结构
    get是一个HBase Ruby方法,’ORDER_INFO’、’000001’、{FORMATTER => ‘toString’}是put方法的三个参数
    FORMATTER要使用大写
    在Ruby中用{}表示一个字典,类似于hashtable,FORMATTER表示key、’toString’表示值
    4.5 更新操作
    4.5.1 需求
    将订单ID为000001的状态,更改为「已付款」
    4.5.2 使用put来更新数据
    同样,在HBase中,也是使用put命令来进行数据的更新,语法与之前的添加数据一模一样。
    4.5.3 更新指定的列

    put 'ORDER_INFO', '000001', 'C1:STATUS', '已付款'
    

    注意:
     HBase中会自动维护数据的版本
     每当执行一次put后,都会重新生成新的时间戳
    C1:STATUS timestamp=1588748844082, value=已提交
    C1:STATUS timestamp=1588748952074, value=已付款
    C1:STATUS timestamp=1588748994244, value=已付款
    4.6 删除操作
    4.6.1 删除状态列数据
    4.6.1.1 需求
    将订单ID为000001的状态列删除。
    4.6.1.2 delete命令
    在HBase中,可以使用delete命令来将一个单元格的数据删除。语法格式如下:

    delete '表名', 'rowkey', '列蔟:列'

    注意:此处HBase默认会保存多个时间戳的版本数据,所以这里的delete删除的是最新版本的列数据。
    4.6.1.3 删除指定的列

    delete 'ORDER_INFO','000001','C1:STATUS'
    

    4.6.2 删除整行数据
    4.6.2.1 需求
    将订单ID为000001的信息全部删除(删除所有的列)
    4.6.2.2 deleteall命令
    deleteall命令可以将指定rowkey对应的所有列全部删除。语法:

    deleteall '表名','rowkey'
    

    4.6.2.3 删除指定的订单

    deleteall 'ORDER_INFO','000001'
    

    4.6.3 清空表
    4.6.3.1 需求
    将ORDER_INFO的数据全部删除
    4.6.3.2 truncate命令
    truncate命令用来清空某个表中的所有数据。语法:

    truncate "表名"
    

    4.6.3.3 清空ORDER_INFO的所有数据

    truncate 'ORDER_INFO'
    

    4.7 导入测试数据集
    4.7.1 需求
    在资料的 数据集/ ORDER_INFO.txt 中,有一份这样的HBase数据集,我们需要将这些指令放到HBase中执行,将数据导入到HBase中。

    可以看到这些都是一堆的put语句。那么如何才能将这些语句全部执行呢?

    4.7.2 执行command文件
    4.7.2.1 上传command文件
    将该数据集文件上传到指定的目录中
    4.7.2.2 执行
    使用以下命令执行:

    hbase shell /export/software/ORDER_INFO.txt
    

    即可。
    4.8 计数操作
    4.8.1 需求
    查看HBase中的ORDER_INFO表,一共有多少条记录。
    4.8.2 count命令
    count命令专门用来统计一个表中有多少条数据。语法:

    count ‘表名’
    

    注意:这个操作是比较耗时的。在数据量大的这个命令可能会运行很久。
    4.8.3 获取订单数据

     count 'ORDER_INFO'
    

    4.9 大量数据的计数统计
    当HBase中数据量大时,可以使用HBase中提供的MapReduce程序来进行计数统计。语法如下:

    $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter '表名'
    

    4.9.1 启动YARN集群
    启动yarn集群

    start-yarn.sh
    

    启动history server

    mr-jobhistory-daemon.sh start historyserver
    

    4.9.2 执行MR JOB

    $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'ORDER_INFO'
    

    通过观察YARN的WEB UI,我们发现HBase启动了一个名字为rowcounter_ORDER_INFO的作业。

    4.10 扫描操作
    4.10.1 需求一:查询订单所有数据
    4.10.1.1 需求
    查看ORDER_INFO表中所有的数据
    4.10.1.2 scan命令
    在HBase,我们可以使用scan命令来扫描HBase中的表。语法:

    scan '表名'
    

    4.10.1.3 扫描ORDER_INFO表

    scan 'ORDER_INFO',{FORMATTER => 'toString'}
    

    注意:要避免scan一张大表!
    4.10.2 需求二:查询订单数据(只显示3条)

    scan 'ORDER_INFO', {LIMIT => 3, FORMATTER => 'toString'}
    

    4.10.3 需求三:查询订单状态、支付方式
    4.10.3.1 需求
    只查询订单状态以及支付方式,并且只展示3条数据
    4.10.3.2 命令

    scan 'ORDER_INFO', {LIMIT => 3, COLUMNS => ['C1:STATUS', 'C1:PAYWAY'], FORMATTER => 'toString'}
    

    注意:
    [‘C1:STATUS’, …]在Ruby中[]表示一个数组
    4.10.4 需求四:查询指定订单ID的数据并以中文展示
    根据ROWKEY来查询对应的数据,ROWKEY为02602f66-adc7-40d4-8485-76b5632b5b53,只查询订单状态、支付方式,并以中文展示。

    要查询指定ROWKEY的数据,需要使用ROWPREFIXFILTER,用法为:

    scan '表名', {ROWPREFIXFILTER => 'rowkey'}
    

    实现指令:

    scan 'ORDER_INFO', {ROWPREFIXFILTER => '02602f66-adc7-40d4-8485-76b5632b5b53', COLUMNS => ['C1:STATUS', 'C1:PAYWAY'], FORMATTER => 'toString'}
    

    4.11 过滤器
    4.11.1 简介
    在HBase中,如果要对海量的数据来进行查询,此时基本的操作是比较无力的。此时,需要借助HBase中的高级语法——Filter来进行查询。Filter可以根据列簇、列、版本等条件来对数据进行过滤查询。因为在HBase中,主键、列、版本都是有序存储的,所以借助Filter,可以高效地完成查询。当执行Filter时,HBase会将Filter分发给各个HBase服务器节点来进行查询。

    HBase中的过滤器也是基于Java开发的,只不过在Shell中,我们是使用基于JRuby的语法来实现的交互式查询。以下是HBase 2.2的JAVA API文档。
    http://hbase.apache.org/2.2/devapidocs/index.html

    4.11.2 HBase中的过滤器
    在HBase的shell中,通过show_filters指令,可以查看到HBase中内置的一些过滤器。

    hbase(main):028:0> show_filters
    DependentColumnFilter                                                                                                                                                       
    KeyOnlyFilter                                                                                                                                                               
    ColumnCountGetFilter                                                                                                                                                        
    SingleColumnValueFilter                                                                                                                                                     
    PrefixFilter                                                                                                                                                                
    SingleColumnValueExcludeFilter                                                                                                                                              
    FirstKeyOnlyFilter                                                                                                                                                          
    ColumnRangeFilter                                                                                                                                                           
    ColumnValueFilter                                                                                                                                                           
    TimestampsFilter                                                                                                                                                            
    FamilyFilter                                                                                                                                                                
    QualifierFilter                                                                                                                                                             
    ColumnPrefixFilter                                                                                                                                                          
    RowFilter                                                                                                                                                                   
    MultipleColumnPrefixFilter                                                                                                                                                  
    InclusiveStopFilter                                                                                                                                                         
    PageFilter                                                                                                                                                                  
    ValueFilter                                                                                                                                                                 
    ColumnPaginationFilter
    

    rowkey
    过滤器 RowFilter 实现行键字符串的比较和过滤
    PrefixFilter rowkey前缀过滤器
    KeyOnlyFilter 只对单元格的键进行过滤和显示,不显示值
    FirstKeyOnlyFilter 只扫描显示相同键的第一个单元格,其键值对会显示出来
    InclusiveStopFilter 替代 ENDROW 返回终止条件行
    列过滤器 FamilyFilter 列簇过滤器
    QualifierFilter 列标识过滤器,只显示对应列名的数据
    ColumnPrefixFilter 对列名称的前缀进行过滤
    MultipleColumnPrefixFilter 可以指定多个前缀对列名称过滤
    ColumnRangeFilter 过滤列名称的范围
    值过滤器 ValueFilter 值过滤器,找到符合值条件的键值对
    SingleColumnValueFilter 在指定的列蔟和列中进行比较的值过滤器
    SingleColumnValueExcludeFilter 排除匹配成功的值
    其他过滤器 ColumnPaginationFilter 对一行的所有列分页,只返回 [offset,offset+limit] 范围内的列
    PageFilter 对显示结果按行进行分页显示
    TimestampsFilter 时间戳过滤,支持等值,可以设置多个时间戳
    ColumnCountGetFilter 限制每个逻辑行返回键值对的个数,在 get 方法中使用
    DependentColumnFilter 允许用户指定一个参考列或引用列来过滤其他列的过滤器

    Java API官方地址:https://hbase.apache.org/devapidocs/index.html
    4.11.3 过滤器的用法
    过滤器一般结合scan命令来使用。打开HBase的JAVA API文档。找到RowFilter的构造器说明,我们来看以下,HBase的过滤器该如何使用。
    scan ‘表名’, { Filter => "过滤器(比较运算符, ‘比较器表达式’)” }
    4.11.3.1 比较运算符

    比较运算符	描述
    =	等于
    >	大于
    >=	大于等于
    <	小于
    <=	小于等于
    !=	不等于
    

    4.11.3.2 比较器
    比较器 描述

    BinaryComparator	匹配完整字节数组
    BinaryPrefixComparator	匹配字节数组前缀
    BitComparator	匹配比特位
    NullComparator	匹配空值
    RegexStringComparator	匹配正则表达式
    SubstringComparator	匹配子字符串
    

    4.11.3.3 比较器表达式
    基本语法:比较器类型:比较器的值
    比较器 表达式语言缩写

    BinaryComparator	binary:值
    BinaryPrefixComparator	binaryprefix:值
    BitComparator	bit:值
    NullComparator	null
    RegexStringComparator	regexstring:正则表达式
    SubstringComparator	substring:值
    

    4.11.4 需求一:使用RowFilter查询指定订单ID的数据

    4.11.4.1 需求
    只查询订单的ID为:02602f66-adc7-40d4-8485-76b5632b5b53、订单状态以及支付方式   
    
    分析
    1.因为要订单ID就是ORDER_INFO表的rowkey,所以,我们应该使用rowkey过滤器来过滤
    2.通过HBase的JAVA API,找到RowFilter构造器
    
    通过上图,可以分析得到,RowFilter过滤器接受两个参数,
     op——比较运算符
     rowComparator——比较器
    所以构建该Filter的时候,只需要传入两个参数即可
    

    4.11.4.2 命令

    scan 'ORDER_INFO', {FILTER => "RowFilter(=,'binary:02602f66-adc7-40d4-8485-76b5632b5b53')"}
    4.11.5 需求二:查询状态为已付款的订单
    4.11.5.1 需求
    查询状态为「已付款」的订单
    
    分析
    1.因为此处要指定列来进行查询,所以,我们不再使用rowkey过滤器,而是要使用列过滤器
    2.我们要针对指定列和指定值进行过滤,比较适合使用SingleColumnValueFilter过滤器,查看JAVA API
    
    需要传入四个参数:
     列簇
     列标识(列名)
     比较运算符
     比较器
    
    注意:
    列名STATUS的大小写一定要对!此处使用的是大写!
    列名写错了查不出来数据,但HBase不会报错,因为HBase是无模式的
    4.11.5.2 命令
    scan 'ORDER_INFO', {FILTER => "SingleColumnValueFilter('C1', 'STATUS', =, 'binary:已付款')", FORMATTER => 'toString'}
    

    4.11.6 需求三:查询支付方式为1,且金额大于3000的订单

    分析
     此处需要使用多个过滤器共同来实现查询,多个过滤器,可以使用AND或者OR来组合多个过滤器完成查询
     使用SingleColumnValueFilter实现对应列的查询
    4.11.6.1 命令
    1.查询支付方式为1
    SingleColumnValueFilter('C1', 'PAYWAY', = , 'binary:1')
    2.查询金额大于3000的订单
    SingleColumnValueFilter('C1', 'PAY_MONEY', > , 'binary:3000')
    3.组合查询
    scan 'ORDER_INFO', {FILTER => "SingleColumnValueFilter('C1', 'PAYWAY', = , 'binary:1') AND SingleColumnValueFilter('C1', 'PAY_MONEY', > , 'binary:3000')", FORMATTER => 'toString'}
    
    注意:
    HBase shell中比较默认都是字符串比较,所以如果是比较数值类型的,会出现不准确的情况
    例如:在字符串比较中4000是比100000大的
    4.12 INCR
    4.12.1 需求
    某新闻APP应用为了统计每个新闻的每隔一段时间的访问次数,他们将这些数据保存在HBase中。
    该表格数据如下所示:
    新闻ID	访问次数	时间段	ROWKEY
    0000000001	12	00:00-01:00	0000000001_00:00-01:00
    0000000002	12	01:00-02:00	0000000002_01:00-02:00
    
    要求:原子性增加新闻的访问次数值。
    4.12.2 incr操作简介
    incr可以实现对某个单元格的值进行原子性计数。语法如下:
    incr '表名','rowkey','列蔟:列名',累加值(默认累加1)
    
     如果某一列要实现计数功能,必须要使用incr来创建对应的列
     使用put创建的列是不能实现累加的
    

    4.12.3 导入测试数据

    该脚本创建了一个表,名为NEWS_VISIT_CNT,列蔟为C1。并使用incr创建了若干个计数器,每个rowkey为:新闻的编号_时间段。CNT为count的缩写,表示访问的次数。
    
    hbase shell /export/software/NEWS_VISIT_CNT.txt 
    scan 'NEWS_VISIT_CNT', {LIMIT => 5, FORMATTER => 'toString'}
    4.12.4 需求一:对0000000020新闻01:00 - 02:00访问计数+1
    1.获取0000000020这条新闻在01:00-02:00当前的访问次数
    get_counter 'NEWS_VISIT_CNT','0000000020_01:00-02:00','C1:CNT'
    此处,如果用get获取到的数据是这样的:
    base(main):029:0> get 'NEWS_VISIT_CNT','0000000020_01:00-02:00','C1:CNT'
    COLUMN                                           CELL                                                                                                                                        
     C1:CNT                                          timestamp=1599529533072, value=\x00\x00\x00\x00\x00\x00\x00\x06                                                                             
    1 row(s)
    Took 0.0243 seconds
    
    2.使用incr进行累加
    incr 'NEWS_VISIT_CNT','0000000020_01:00-02:00','C1:CNT'
    
    3.再次查案新闻当前的访问次数
    get_counter 'NEWS_VISIT_CNT','0000000020_01:00-02:00','C1:CNT'
    4.13 更多的操作
    以下连接可以查看到所有HBase中支持的SHELL脚本。
    https://learnhbase.net/2013/03/02/hbase-shell-commands/
    

    5. shell管理操作

    5.1 status
    例如:显示服务器状态
    2.4.1 :062 > status
    1 active master, 0 backup masters, 3 servers, 0 dead, 1.0000 average load
    Took 0.0034 seconds     
    5.2 whoami
    显示HBase当前用户,例如:
    2.4.1 :066 > whoami
    root (auth:SIMPLE)
        groups: root
    Took 0.0080 seconds
    5.3 list
    显示当前所有的表
    2.4.1 :067 > list
    TABLE                                                                                                                                                  
    ORDER_INFO                                                                                                                                             
    1 row(s)
    Took 0.0266 seconds                                                                                                                                    
     => ["ORDER_INFO"]
    5.4 count
    统计指定表的记录数,例如:
    2.4.1 :070 > count 'ORDER_INFO'
    66 row(s)
    Took 0.0404 seconds                                                                                                                                    
     => 66
    5.5 describe
    展示表结构信息
    2.4.1 :074 > describe 'ORDER_INFO'
    Table ORDER_INFO is ENABLED                                                                                                                            
    ORDER_INFO                                                                                                                                             
    COLUMN FAMILIES DESCRIPTION                                                                                                                            
    {NAME => 'C1', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE =
    > 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE =
    > 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLO
    CKSIZE => '65536'}                                                                                                                                     
    1 row(s)
    Took 0.0265 seconds        
    5.6 exists
    检查表是否存在,适用于表量特别多的情况
    2.4.1 :075 > exists 'ORDER_INFO'
    Table ORDER_INFO does exist                                                                                                                            
    Took 0.0050 seconds                                                                                                                                    
     => true
    5.7 is_enabled、is_disabled
    检查表是否启用或禁用
    2.4.1 :077 > is_enabled 'ORDER_INFO'
    true                                                                                                                                                   
    Took 0.0058 seconds                                                                                                                                    
     => true 
    2.4.1 :078 > is_disabled 'ORDER_INFO'
    false                                                                                                                                                  
    Took 0.0085 seconds                                                                                                                                    
     => 1
    5.8 alter
    该命令可以改变表和列蔟的模式,例如:
    

    创建一个USER_INFO表,两个列蔟C1、C2

    create 'USER_INFO', 'C1', 'C2'
    

    新增列蔟C3

    alter 'USER_INFO', 'C3'
    

    删除列蔟C3

    alter 'USER_INFO', 'delete' => 'C3'
    
    > 注意: 'delete' => 'C3',还是一个Map结构,只不过只有一个key,可以省略两边的{}
    > 5.9 disable/enable 禁用一张表/启用一张表
    > 5.10 drop 删除一张表,记得在删除表之前必须先禁用
    > 5.11 truncate 清空表的数据,禁用表-删除表-创建表
    
    展开全文
  • 0 hbase本身就是一个数据库,也只有一...1 hbase shell操作:在hbase/bin 目录下,输入hbase 可以看到hbase所有命令如下:[root@master bin]# pwd/usr/local/hbase/bin[root@master bin]# hbaseUsage: hbase where a...

    0 hbase本身就是一个数据库,也只有一个数据库,只能在里面创建表, 其语法和MySQL没有任何参考性,

    可比较性。

    1 hbase shell操作:

    在hbase/bin 目录下,输入hbase 可以看到hbase所有命令如下:

    [root@master bin]# pwd

    /usr/local/hbase/bin

    [root@master bin]# hbase

    Usage: hbase

    where an option from one of these categories:

    DBA TOOLS

    shell run the HBase shell

    hbck run the hbase 'fsck' tool

    hlog write-ahead-log analyzer

    hfile store file analyzer

    zkcli run the ZooKeeper shell

    PROCESS MANAGEMENT

    master run an HBase HMaster node

    regionserver run an HBase HRegionServer node

    zookeeper run a Zookeeper server

    rest run an HBase REST server

    thrift run the HBase Thrift server

    thrift2 run the HBase Thrift2 server

    avro run an HBase Avro server

    PACKAGE MANAGEMENT

    classpath dump hbase CLASSPATH

    version print the version

    or

    CLASSNAME run the class named CLASSNAME

    Most commands print help when invoked w/o parameters.

    hbase通用命令(在hbase shell内执行)

    a) 通用命令

    status:提供HBase的状态,例如,服务器的数量。

    version:提供正在使用HBase版本。

    table_help:表引用命令提供帮助。

    whoami:提供有关用户的信息。

    b) 数据定义语言

    hbase在表的操作命令:

    create:创建一个表。

    list:列出HBase的所有表。

    disable:禁用表。

    is_disabled:验证表是否被禁用。

    enable:启用一个表。

    is_enabled:验证表是否已启用。

    describe:提供了一个表的描述。

    alter:改变一个表。

    exists:验证表是否存在。

    drop:从HBase中删除表。

    drop_all:丢弃在命令中给出匹配“regex”的表。

    Java Admin API:在此之前所有的上述命令,Java提供了一个通过API编程来管理实现DDL功能。在这个org.apache.hadoop.hbase.client包中有HBaseAdmin和HTableDescriptor 这两个重要的类提供DDL功能。

    put:把指定列在指定的行中单元格的值在一个特定的表。

    get:取行或单元格的内容。

    delete:删除表中的单元格值。

    deleteall:删除给定行的所有单元格。

    scan:扫描并返回表数据。

    count:计数并返回表中的行的数目。

    truncate:禁用,删除和重新创建一个指定的表。

    Java client API:在此之前所有上述命令,Java提供了一个客户端API来实现DML功能,CRUD(创建检索更新删除)操作更多的是通过编程,在org.apache.hadoop.hbase.client包下。 在此包HTable 的 Put和Get是重要的类。

    应用案例:

    0 执行/bin/hbase shell启动命令行

    hbase(main):001:0>

    1.创建表 create : create 表名 列簇名称1,列簇名称2...

    hbase(main):002:0> create 'stu','base','more'

    创建表时候制定列族的高级特性 :

    hbase(main):002:0> create 'stu', {NAME => 't',VERSION=1}

    2.检测表是否存在 exists 或者 list

    hbase(main):002:0> exists 'stu'

    Table stu does exist

    0 row(s) in 0.1000 seconds

    显示所有表list:

    hbase(main):003:0> list

    TABLE

    stu

    1 row(s) in 0.0840 seconds

    => ["stu"]

    3.插入记录 put

    put 表名 行健 列簇:列名 列值

    下面表示向hdfs文件bas插入两条记录

    hbase(main):004:0> put 'stu','1','base:id','1'

    0 row(s) in 0.4080 seconds

    hbase(main):005:0> put 'stu','1','more:sex','man' 可以看到,不同列簇可以拥有相同的 row key

    0 row(s) in 0.4560 seconds

    hbase(main):006:0> put 'stu','1','base:name','zm'

    0 row(s) in 0.5030 seconds

    hbase(main):007:0> put 'stu','1','base:age','30'

    0 row(s) in 0.0240 seconds

    4.查询一条记录 get 表名 行健

    get 'stu','1' 将行健对应的列按行展示

    hbase(main):008:0> get 'stu','1'

    COLUMN CELL

    base:age timestamp=1426159948234, value=30

    base:id timestamp=1426159671374, value=1

    base:name timestamp=1426159926391, value=zm

    more:sex timestamp=1426159691563, value=man

    4 row(s) in 0.2220 seconds

    或者查询行健下的具体列

    hbase(main):009:0> get 'stu','1','base:name'

    COLUMN CELL

    base:name timestamp=1426159926391, value=zm

    1 row(s) in 0.0570 seconds

    5.查询所有记录

    scan 'stu'

    hbase(main):015:0> scan 'stu'

    ROW COLUMN+CELL

    1 column=base:age, timestamp=1426159948234, value=30

    1 column=base:id, timestamp=1426159671374, value=1

    1 column=base:name, timestamp=1426159926391, value=zm

    1 column=more:sex, timestamp=1426159691563, value=man

    2 column=base:age, timestamp=1426160220320, value=27

    2 column=base:id, timestamp=1426160248465, value=2

    2 column=base:name, timestamp=1426160205334, value=xin

    2 row(s) in 0.0500 seconds

    使用scan查询某个列的所有数据:

    hbase(main):004:0> scan 'stu',{COLUMNS=>'base:name'}

    ROW                      COLUMN+CELL

    1                       column=base:name, timestamp=1426159926391, value=zm

    2                       column=base:name, timestamp=1426160205334, value=xin

    6.删除一条记录

    hbase(main):019:0> deleteall 'stu','2'

    0 row(s) in 0.0290 seconds

    hbase(main):020:0> get 'stu','2'

    COLUMN CELL

    0 row(s) in 0.0240 seconds

    7.删除一个列

    hbase(main):016:0> delete 'stu','1','more:sex'

    0 row(s) in 0.3190 seconds

    hbase(main):017:0> get 'stu','1'

    COLUMN CELL

    base:age timestamp=1426159948234, value=30

    base:id timestamp=1426159671374, value=1

    base:name timestamp=1426159926391, value=zm

    3 row(s) in 0.0420 seconds

    8.修改列值

    hbase(main):021:0> put 'stu','1','base:age','31'

    0 row(s) in 0.0150 seconds

    hbase(main):022:0> get 'stu','1'

    COLUMN CELL

    base:age timestamp=1426160505433, value=31 将最新的结果查出来

    base:id timestamp=1426159671374, value=1

    base:name timestamp=1426159926391, value=zm

    3 row(s) in 0.0610 seconds

    9.删除表

    hbase(main):023:0> disable 'stu'

    0 row(s) in 11.4010 seconds

    hbase(main):025:0> drop 'stu'

    0 row(s) in 0.8830 seconds

    alter :  删除表的所有列族

    hbase shell 删除列族

    hbase(main):002:0> alter 'stu','delete' => 'more' 这样就将stu表列族more和下面数据删除掉

    Updating all regions with the new schema...

    1/1 regions updated.

    Done.

    0 row(s) in 1.1700 seconds

    清空表数据:  truncate  table

    hbase 表权限:    这几个在工作中暂时没有用到过

    grant

    我们可以从RWXCA组,其中给予零个或多个特权给用户

    R - 代表读取权限

    W - 代表写权限

    X - 代表执行权限

    C - 代表创建权限

    A - 代表管理权限

    下面给出是为用户“Tutorialspoint'授予所有权限的例子。

    hbase(main):018:0>grant'Tutorialspoint','RWXCA'

    展开全文
  • 一、hbase shell基本操作命令名称命令表达式创建表create '表名称','列簇名称1','列簇名称2'.......添加记录put '表名称', '行名称','列簇名称:','值'查看记录get '表名称','行名称'查看表中的记录总数count '表名称...
  • Hbase shell命令大全与表结构详解案例展示

    千次阅读 多人点赞 2021-09-17 10:59:48
    Apache HBase Shell 是(J)Ruby的 IRB,其中添加了一些 HBase 特定命令。您可以在 IRB 中执行的任何操作,您都应该可以在 HBase Shell 中执行。 0. 首先创建hbase集群的操作用户 hbase_test 1.首先root用户在本地...
  • hbase查询命令

    2021-05-11 14:33:53
    命令结束没有分号 HBase 查询 HBase的查询实现只提供两种方式: 1、按指定RowKey获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.Get) get 'stu',1 # 查询rowkey 为1 的记录 2、按指定的条件获取...
  • 一个student表,表的逻辑模型如下:行键为学号,时间戳...行键时间戳列族name列族score20130001T2'zhangsan'T3score:Chinese='90'T4score:English='80'20130002T5'lisi'T6score:Chinese='95'......Tn进入HBase的shel...
  • HBase scan命令详解

    2021-01-12 09:08:16
    hbase中scan命令是我们经常使用到的,而filter的作用尤其强大。这里简要的介绍下scan下filter命令的使用.插入scan命令需要的数据这里模拟了部分微博评论的数据,然后使用代码插入数据到hbase,代码就不列出来了比较...
  • 查看 HBase 是否启动:jps(注:docker 容器内没有该命令) 进入 HBase 的客户端:./hbase shell 2.命名空间 1)创建命名空间 create_namespace '命名空间' 2)查看命名空间 list_nameapce 注:HBase系统...
  • HBase Shell操作命令

    2020-12-21 03:10:51
    HBase单机配置(官网):解压缩,然后进入到那个要解压的目录.$ tar xfz hbase-××××.tar.gz$ cd hbase-×××××现在你已经可以启动HBase了。但是你可能需要先编辑conf/hbase-site.xml去配置hbase.rootdir,来...
  • hbase基础操作命令

    2021-10-31 18:55:46
    1.开启hbase进程 在有Hadoop的前提之下,开启hbase服务,并查看所有进程 [root@master ~]# /export/servers/hbase-1.1.12/bin/start-hbase.sh 2.检查hbase状态 在hbase的bin目录下打开hbase服务器,并检查...
  • Hbase的DDL命令

    2021-03-17 20:07:57
    进入HBASE命令hbase shell) 查看所有表(list) 查看名字空间(类似于mysql的数据库名)(list_namespace) 例举出一个名字空间下的所有表(list_namespace_tables ‘namespace名字’) 创建名字空间(create_...
  • Phoenix是HBase的一层包装,通过这层包装,我们可以像使用MySQL一样特别方便的操作HBase。此外,Phoenix还可以很方便的创建二级索引。 连接HBase sqlline.py hadoop01,hadoop02,hadoop03:2181    &...
  • HBase Shell 提供了大多数的 HBase 命令,通过 HBase Shell,用户可以方便地创建、删除及修改表,还可以向表中添加数据,列出表中的相关信息等。本节介绍一些常用的命令和具体操作,并讲解如何使用命令行实现一个...
  • Hbase shell命令

    千次阅读 2020-12-21 18:04:10
    Hbase shell命令 1.基础概念 (1)表( table ):HBase采用表来组织数据; (2)行( row ):每个表都由行组成,每个行由行键( row key )来标识,行键可以是任意字符串; (3)列族( column family ):一个...
  • hbase shell操作命令

    2021-01-24 13:21:28
    根据rowkey从hbase获取数据 get "tablename", "rowkeyname" 删除一条数据 deleteall"tablename", "rowkeyname
  • Hbase常用操作命令

    2021-11-13 21:01:29
    一、创建数据表查看表 ...hbase(main):007:0> create 't1' ,'cf1','cf2' 0 row(s) in 4.5550 seconds => Hbase::Table - t1 hbase(main):008:0> (3)列举表 hbase(main):008:0> list TABLE ...
  • 1、HBase Shell操作 1、通用命令 //展示regionserver的task列表 hbase(main):000:0>processlist //展示集群的状态 hbase(main):000:0>status //table命令的帮助手册 hbase(main):000:0>table_help //显示...
  • HBase Shell命令大全

    2021-08-30 11:41:00
    HBase的名字的来源于Hadoop database,即hadoop数据库,不同于一般的关系数据库,它是非结构化数据存储的数据库,而且它是基于列的而不是基于行的模式。 HBase是一个分布式的、面向列的、基于Google Bigtable的开源...
  • HBase的编程实践(实验3_熟悉常用的HBase操作
  • 1.首先在hbase中新建一张表 create 'zhao','info' 2.去查看表的版本 desc 'zhao' 3.修改表的版本 alter 'zhao',{NAME=>'info',VERSIONS=>3} 4.向表中插入一条数据 put 'zhao','1001','info:name','...
  • Hbase表的操作相相关命令函数 2.1. list hbase(main):008:0> list TABLE 0 row(s) in 0.0410 seconds list后可以使用*等通配符来进行表的过滤! 2.2 create 创建表时,需要指定表名和列族名,
  • Hbase常用基础命令

    2021-01-11 20:41:56
    Hbase表结构1....查看当前操作用户> whoami3.创建一个表// 表名 列族1 列族2> create 'Rumenz','user','userInfo'4.查看数据库的表> list5.添加数据// 表名 rowkey 列族:字段名 值> put '...
  • HBase Shell基本常用操作命令

    千次阅读 2021-11-14 16:08:43
    锦囊命令 help 'namespace' 1. 创建 create_namespace 'liu_data' 2. 删除 删除数据库时 , 库中不可以存在表 , 否则报错Only empty namespaces can be removed. Namespace liu_data has 1 tables -- 先下线...
  • 键入HBase Shell命令操作HBase三、常用HBase Shell实例1.常用的HBase Shell命令2.一个运用上述命令的综合实例:总结 前言 提示:本博客为博主在阅读吴章勇和王强老师编写的《大数据 Hadoop3.X 分布式处理实战》的...
  • HBase 常用Shell命令

    2020-12-21 03:10:55
    两个月前使用过hbase,现在最基本的命令都淡忘了,留一个备查~hbase shell命令描述alter修改列族(column family)模式count统计表中行的数量create创建表describe显示表相关的详细信息delete删除指定对象的值(可以为...
  • 操作环境:操作系统:Ubuntu 16.04.6 LTSHBase版本:HBase 1.1.5HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据。hadoop@dblab:/usr/local/hadoop$ cd /usr/...
  • 在linux下操作hbase

    2021-05-10 04:11:54
    在linux下操作hbase作者:bin这个月比较忙,一直都没有时间整理最近学习的东西,T_T这里介绍如何使用hbase shell进行操作hbase具体的安装、配置,可以随意在网上找到,这里不赘述登录hbase shellhbase shell退出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,618
精华内容 17,047
关键字:

hbase操作命令