HBase常用shell操作(未完成)

简介: HBase常用shell操作(未完成)

1.创建表

语法: create ‘表名’,‘列簇名’……

eg:创建一个学生表,表名为STUDENT,该表由一个列簇为A1

create 'STUDENT','A1'

备注:create要小写,一个表可以包含若干个列簇(能用一个列簇解决,绝不用两个)

2.查看表

语法:list

eg:查看所有表

list

3.禁用表/启用表

3.1禁用表

语法:disable ‘表名’

eg:禁用STUDENT表

disable 'STUDENT'

3.2启用表

语法:enable ‘表名’

eg:启用STUDENT表

enable 'STUDENT'

4.删除表

语法:drop ‘表名’

eg:删除STUDENT表

disable 'STUDENT'
drop 'STUDENT'

备注:删除表之前必须先禁用该表

5.添加数据

语法: put ‘表名’ ,‘rowkey’,‘列簇名:列名’,‘列值’

eg:向STUDENT表添加数据学生id的值,姓名,性别

put 'STUDENT','00001','A1:id','1'
put 'STUDENT','00001','A1:name','张三'
put 'STUDENT','00001','A1:sex','男'

备注:put一次只能保存一个列的值

6.查看添加的数据

语法:get ‘表名’,‘rowkey’

eg:查看STUDENT表中00001行的数据

get 'STUDENT','00001'

备注:使用get命令获取一行的数据

7.显示中文

需要在get 命令后添加一个属性{FORMATTER => 'toString'}

get 'STUDENT','00001', {FORMATTER => 'toString'}

备注: { key => value},这个是Ruby语法,表示定义一个HASH结构

8.更新数据操作

1.该操作和添加数据完全相同,

2.如果指定rowkey的列簇中的列下已经有值,则会覆盖之前的值,并且生成新的timestamp

3.HBase会自动维护数据的版本

9.删除数据操作

9.1删除指定的单元格

语法:delete ‘表名’, ‘rowkey’, ‘列蔟:列’

eg:删除rowkey为00001学生的性别

delete 'STUDENT,'00001','A1:sex'

9.2删除整行数据

语法:deleteall ‘表名’,‘rowkey’

eg:删除rowkey为00001学生的所有数据

deleteall 'STUDENT','00001'

10.清空表

语法:truncate ‘表名’

eg:清空STUDENT表中所有数据

truncate 'STUDENT'

备注:truncate表之前不需要disable,系统会自动限制性disable,在执行truncate。

11计数操作

语法:count ‘表名’

eg:统计STUDENT表中所有数据

count 'STUDENT'

备注:count统计可以理解为单线程程序,不断累加数据的条数,如果数据量比较大,会比较耗费时间。

解决方法:当数据量较大时,可以采用hbase提供的统计行数的MR进行统计

hbase org.apache.hadoop.hbase.mapreduce.RowCounter '表名'

备注:此方法仅限于数据量大时使用,因为启动MR需要耗费大量的时间。

12扫描表操作

语法:scan ‘表名’[,{FORMATTER=>‘toString’}]

场景:该表用于扫描整个表

eg:扫面STUDENT表中的数据

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

备注:此操作慎用,在扫描大表的时候会严重浪费系统性能。

解决方法:只展示前面一部分数据

eg:扫描整个表,只展示前三条数据,并且结果中只展示学生id和学生姓名。

scan 'STUDENT',{LIMIT => 3,columns =>['A:id','A:name'],FORMATTER => 'toString'}

常用的过滤器:

语法说明:

    scan '表名', { FILTER => "过滤器(比较运算符, '比较器表达式')" }
    常见的过滤器: 
      rowkey的过滤器:
        RowFilter
        PrefixFilter
        
      列族过滤器:
        FamilyFilter
      列名过滤器:
        QualifierFilter
      列值过滤器:
        ValueFilter
        SingleColumnValueFilter
      分页过滤器: 
        PageFilter

    常见的比较运算符: 
      >  <  >= <= = !=
    常见的比较器 : 
      BinaryComparator  :  进行完整匹配某一个具体的值
      BinaryPrefixComparator : 进行匹配前缀的
      SubstringComparator : 进行模糊匹配的
      NullComparator : 匹配空值
    比较器表达式 :
      BinaryComparator表达式写法:       binary:值
      BinaryPrefixComparator表达式写法: binaryprefix:值
      SubstringComparator 表达式写法:   substring:值
      NullComparator表达式写法:         null 


  需求一: 使用 RowFilter 查询指定订单ID的数据
    只查询订单的ID为:02602f66-adc7-40d4-8485-76b5632b5b53 、订单状态以及支付方式

    scan 'ORDER_INFO', { FILTER => "RowFilter(=, 'binary:02602f66-adc7-40d4-8485-76b5632b5b53')" ,COLUMNS => ['C1:STATUS', 'C1:PAYWAY'],FORMATTER => 'toString' }

  需求二: 查询状态为已付款的订单

    scan 'ORDER_INFO', { FILTER => "ValueFilter(=, 'binary:已付款')" ,FORMATTER => 'toString' }
      效果: 查询在表中 包含以付款的数据有那些, 结果也只展示对应查询数据的字段内容

    scan 'ORDER_INFO', { FILTER => "SingleColumnValueFilter('C1','STATUS',=, 'binary:已付款')" ,FORMATTER => 'toString' }
    scan 'ORDER_INFO', { FILTER => "SingleColumnValueExcludeFilter('C1','STATUS',=, 'binary:已付款')" ,FORMATTER => 'toString' }
  需求三:查询支付方式为1,且金额大于3000的订单 :  组合使用过滤器的方案
    scan 'ORDER_INFO', {FILTER => "SingleColumnValueFilter('C1', 'PAYWAY', = , 'binary:1') AND SingleColumnValueFilter('C1', 'PAY_MONEY', > , 'binary:3000')", FORMATTER => 'toString'}

incr的相关的操作:

语法:

incr ‘表名’,‘rowkey’,‘列蔟:列名’,累加值(默认累加1)

  注意事项: 
    如果某一列要实现计数功能,必须要使用incr来创建对应的列
    使用put创建的列是不能实现累加的

  添加数据后, 如果查看使用incr 构建的字段的数据: 
    get_counter '表名','rowkey','列族:列名'


  具体操作: 
    get_counter 'NEWS_VISIT_CNT','0000000020_01:00-02:00','C1:CNT' 
    incr 'NEWS_VISIT_CNT','0000000020_01:00-02:00','C1:CNT'  

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
缓存 监控 Shell
如何使用 HBase Shell 进行数据的实时监控和备份?
如何使用 HBase Shell 进行数据的实时监控和备份?
|
1月前
|
Shell 分布式数据库 Hbase
如何使用 HBase Shell 进行数据的批量导入和导出?
如何使用 HBase Shell 进行数据的批量导入和导出?
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
78 4
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
59 3
|
5月前
|
存储 Shell 分布式数据库
Hbase 的基本shell 命令
Hbase 的基本shell 命令
256 8
|
4月前
|
存储 Shell 分布式数据库
Hbase 的基本shell 命令
Hbase 的基本shell 命令
|
5月前
|
缓存 监控 Shell
使用 HBase Shell 进行数据的实时监控和备份
使用 HBase Shell 进行数据的实时监控和备份
|
5月前
|
Shell 分布式数据库 Hbase
使用 HBase Shell 进行数据的批量导入和导出
使用 HBase Shell 进行数据的批量导入和导出
647 6
|
7月前
|
分布式计算 安全 Hadoop
HBase Shell-org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet 已解决
在HBase Shell遇到错误时,检查Hadoop非安全模式:`hdfs dfsadmin -safemode get`。问题解决在于`hbase-site.xml`中添加配置:Zookeeper客户端端口设为2181和预写日志提供者设为filesystem。
179 6
|
3月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
118 4