【Hbase】hbase的shell操作(2)

这篇具有很好参考价值的文章主要介绍了【Hbase】hbase的shell操作(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

命令汇总

需求

基本操作

创建表

 查看表

 删除表

禁用表

启用表

数据操作

添加数据

获取(查看)数据

更新(修改)数据

删除数据

删除指定的列

删除整行数据

清空表

数据的导入

数据文件的准备

上传数据文件到服务器

创建表

执行命令导入数据文件

查看数据

计数操作

计数命令

MR程序计算

扫描操作

全表扫描

限定记录数

限定列

限定rowkey

过滤器(FILTER)

简介

过滤器

过滤器的用法

 比较知识

案例一:使用RowFilter查询指定订单id的数据

案例二:查询状态为已付款的订单

案例三:组合多条件过滤

INCR

需求

incr操作

导入测试数据

获取计数器的值命令

使用incr进行累加操作

shell管理操作

status

whoami

list

count

describe

exists

is_enabled、is_disabled

alter

其他


hbase在虚拟机手动操作就是shell操作,与之对应的是在idea或者其他java环境上进行java api操作,但结果都是一样的,都能实现客户需求。

命令汇总

命令

功能

命令

功能

create

创建表

count

统计行数

put

插入或更新数据

delete

删除指定的行或列的数据

get

获取指定行或列的数据

deleteall

删除整个行或者列的数据

scan

扫描表并返回表的数据

truncate

删除表的数据,结构还在

describe

查看表的结构

drop

删除整个表(包括数据和结构)慎用

 

需求

有以下的订单数据,要将其保存在HBase

订单id

订单状态

支付金额

支付方式id

用户id

操作时间

商品分类

001

已付款

200.5

1

1001

2021-3-1 18:01:40

手机

基本操作

创建表

语法:

create ‘表名’,’列簇名1’,’列簇名2’,..

说明:

create要小写

一个表可以包含多个列簇

【Hbase】hbase的shell操作(2)

 查看表

语法:

list

describe ‘表名’

【Hbase】hbase的shell操作(2)

 删除表

【Hbase】hbase的shell操作(2)

 

禁用表

语法:

disable ‘表名’

【Hbase】hbase的shell操作(2)

 

启用表

语法:

enable ‘表名’

【Hbase】hbase的shell操作(2)

 

数据操作

添加数据

语法:

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

【Hbase】hbase的shell操作(2)

【Hbase】hbase的shell操作(2) 

 

获取(查看)数据

语法:

get ‘表名’,’rowkey’

【Hbase】hbase的shell操作(2)

 

注意:

如果显示中文乱码,是因为hbase shell中显示中文是十六进制编码,要正确显示中文,需要添加选项,格式:

,{'FORMATTER' => 'toString'}

【Hbase】hbase的shell操作(2)

 

更新(修改)数据

语法:

put ‘表名’,’rowkey’,’列簇名:列名’,’新值’

注意

在HBase中会自动维护表中数据的版本

每执行一次put操作,都会生成新的时间戳

【Hbase】hbase的shell操作(2)

 

删除数据

删除指定的列

语法:

delete ‘表名’,’rowkey’,’列簇名:列名’

【Hbase】hbase的shell操作(2)

 

无法用delete

删除一整行

【Hbase】hbase的shell操作(2)

 

删除整行数据

语法:

deleteall ‘表名’,’rowkey’

说明:

HBase删除数据时,其实并不是真的删除,而是给数据做一个删除标志,再查询数据的时候不显示出来。

【Hbase】hbase的shell操作(2)

 

清空表

语法:

truncate ‘表名’

【Hbase】hbase的shell操作(2)

 

数据的导入

数据文件的准备

模拟某系统产生日志数据文件,把这些数据文件导入到hbase中

https://pan.baidu.com/s/1fOK51F-krqJz9tDFzxBr8w?pwd=1234   提取码:1234

这是数据

【Hbase】hbase的shell操作(2)

 

上传数据文件到服务器

【Hbase】hbase的shell操作(2)

 

创建表

【Hbase】hbase的shell操作(2)

 

执行命令导入数据文件

【Hbase】hbase的shell操作(2)

 

查看数据

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

【Hbase】hbase的shell操作(2)

 

计数操作

统计表中共有多少条记录

计数命令

语法:

count ‘表名’

【Hbase】hbase的shell操作(2)

 

注意:

当数据量很大的时候,这个操作比较耗时

MR程序计算

当数据量很大很大时,可以通过HBase提供的MR程序来运行计数统计。

语法:

hbase org.apache.hadoop.hbase.mapreduce.RowCounter ‘表名’

注意:

启动yarn集群

【Hbase】hbase的shell操作(2)

 启动历史服务器,命令:mapred --daemon start historyserver

【Hbase】hbase的shell操作(2)

 history的web ui

【Hbase】hbase的shell操作(2)

mr得出结果

【Hbase】hbase的shell操作(2) 

 

扫描操作

全表扫描

语法:

scan ‘表名’,{FORMATTER=>’toString’}

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

注意:

尽量避免全表扫描一张很大很大的表

【Hbase】hbase的shell操作(2)

 

限定记录数

语法:

scan ‘表名’,{FORMATTER=>'toString',LIMIT=>数字}

scan "ORDER_INFO",{FORMATTER=>'toString',LIMIT=>2}

【Hbase】hbase的shell操作(2)

 

限定列

语法:

scan "ORDER_INFO",{FORMATTER=>'toString',COLUMNS=>[‘列簇名1:列名1’,’列簇名1:列名2’,……]}

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

【Hbase】hbase的shell操作(2)

 

限定rowkey

【Hbase】hbase的shell操作(2)

 

语法:

scan "ORDER_INFO",{ROWPREFIXFILTER=>’rowkey’}

【Hbase】hbase的shell操作(2)

 

scan "ORDER_INFO",{FORMATTER=>'toString',COLUMNS=>['C1:PAYWAY','C1:STATUS'],ROWPREFIXFILTER=>'0'}

限定rowkey的前不是0

【Hbase】hbase的shell操作(2)

 

过滤器(FILTER)

简介

在HBase中,如果要对海量的数据进行扫描查询,尤其是全表扫描效率很低,可以使用过滤器Filter来提高查询的效率。Filter可以根据主键、列簇、列、版本号(时间戳)等对数据进行过滤查询。

在HBase中,使用过滤器有两种方式,一是在命令行中使用基于jRuby语法的命令选项实现交互式查询,如上所用,另一种是基于JAVA API的方式来进行编程开发。

过滤器

可以通过show_filters命令,来查看HBase内置的过滤器

【Hbase】hbase的shell操作(2)

 

类别

过滤器

功能

rowkey过滤器

RowFilter

实现行键字符串的比较和过滤

PrefixFilter

rowkey前缀过滤器

KeyOnlyFilter

只对单元格的键过滤不显示值

FirstKeyOnlyFilter

只扫描显示相同键的第一个单元格,其键值对会显示出来

列过滤器

FamilyFilter

列簇过滤器

QualifierFilter

列限定符过滤器,只显示对应列簇列名的数据

ColumnPrefixFilter

对列名称的前缀进行过滤

MultipleColumnPrefixFilter

可以指定多个前缀对列名过滤

ColumnRangeFilter

列名称范围过滤器

值过滤器

ValueFilter

值过滤器,找到符合值条件的键值对

SingleColumnValueFilter

在指定的列簇和列名中进行比较的值过滤器

ColumnValueFilter

列值过滤器

SingleColumnValueExcludeFilter

排除匹配成功的值

其他过滤器

ColumnPaginationFilter

对一行的所有列分页,只返回[offset,offset+limit]范围内的列

PageFilter

对显示结果按行进行分页显示

TimestampsFilter

时间戳过滤器,支持等值,可以设置多个时间戳

ColumnCountGetFilter

限制每个逻辑行返回值对的个数,在get方法中使用

DependentColumnFilter

允许用户指定一个参考列或引用列来过滤其他列的过滤器

 

过滤器的用法

过滤器一般结合scan命令来使用,语法:

scan ‘表名’,{FILTER=>”过滤器(比较运算符,’比较器表达式’)”}

举例:

需求一:查询指定订单的数据,订单号为“02602f66-adc7-40d4-8485-76b5632b5b53”

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

【Hbase】hbase的shell操作(2)

【Hbase】hbase的shell操作(2) 

 比较知识

参考Apache的官网

参考文档:

https://hbase.apache.org/devapidocs/index.html

比较运算符

比较运算符

功能

=

等于

>

大于

<

小于

>=

大于等于

<=

小于等于

!=

不等于

【Hbase】hbase的shell操作(2)

  1. 比较器

比较器

功能

BinaryComparator

匹配完整字节数组

BinaryPrefixComparator

匹配字节数组前缀

BitComparator

匹配比特位

NullComparator

匹配空值

RegexStringComparator

匹配正则表达式

SubStringComparator

匹配子字符串

比较器表达式

比较器

表达式语音缩写

BinaryComparator

binary:值

BinaryPrefixComparator

binaryprefix:值

BitComparator

bit:值

NullComparator

null

RegexStringComparator

regexstring:正则表达式

SubStringComparator

substring:值

案例一:使用RowFilter查询指定订单id的数据

需求:

        查询指定订单的数据,订单号为“02602f66-adc7-40d4-8485-76b5632b5b53”、订单状态及支付方式

分析

  1. 因为订单id就是表的rowkey,所以应该使用rowkey过滤器RowFilter来过滤数据
  2. 比较运算符:=
  3. 比较器表达式:binary:值

命令

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

 【Hbase】hbase的shell操作(2)

 

案例二:查询状态为已付款的订单

需求:

查询状态为已付款的订单

分析

  1. 因为状态为已付款要查询指定值的数据,所以不能使用rowkey过滤器,而是要使用值过滤器
  2. 状态为列名,已付款为值,所以可以选用SingleColumnValueFilter,查看api文档,需要传入四个参数:
    1. 列簇
    2. 列标识符(列名)
    3. 比较运算符
    4. 比较器

【Hbase】hbase的shell操作(2) 

 

命令:

scan 'ORDER_INFO',{FORMATTER=>'toString',FILTER=>"SingleColumnValueFilter('C1','STATUS',=,'binary:已付款')"}

【Hbase】hbase的shell操作(2) 

【Hbase】hbase的shell操作(2) 

 

注意:

  1. 列簇名和列名大小写一定要对
  2. 列名写错了过滤不了数据,但是hbase不会报错,因为hbase是无模式的

 

案例三:组合多条件过滤

需求

查询支付方式为1,且金额大于3000的订单

分析

  1. 此处需要使用多个过滤器组合使用共同实现查询的要求,多个过滤器可以使用AND(且)、OR(或者)来进行组合。
  2. 使用值过滤器SingleColumnValueFilter实现对应列值的查询
  3. 支付方式为1的过滤器:

SingleColumnValueFilter('C1','PAYWAY',=,'binary:1')

金额大于3000的过滤器:

SingleColumnValueFilter('C1','PAY_MONEY',>,'binary:3000')

两个过滤器的关系:且用AND来实现

命令

scan 'ORDER_INFO',{FORMATTER=>'toString',FILTER=>"SingleColumnValueFilter('C1','PAYWAY',=,'binary:1') AND SingleColumnValueFilter('C1','PAY_MONEY',>,'binary:3000')",COLUMNS=>['C1:PAYWAY','C1:PAY_MONEY']}

【Hbase】hbase的shell操作(2)

 练习1:支付方式为1,,且金额不大于3000的订单

scan 'ORDER_INFO',{FORMATTER=>'toString',FILTER=>"SingleColumnValueFilter('C1','PAYWAY',=,'binary:1') AND SingleColumnValueFilter('C1','PAY_MONEY',<=,'binary:3000')",COLUMNS=>['C1:PAYWAY','C1:PAY_MONEY']}

【Hbase】hbase的shell操作(2)

 

INCR

incr(increament)可以实现某个单元格的值进行原子性计数,默认累加1

需求

某新闻app应用为了统计每个新闻的每隔一段时间的访问次数,将新闻数据保存在HBase中,该表格的数据如下:

新闻ID

访问次数

时间段

rowkey

0000000001

12

00:00-01:00

0000000001_00:00-01:00

0000000002

20

01:00-02:00

0000000002_01:00-02:00

要求,原子性的增加新闻的访问次数。

incr操作

语法:

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

说明:

如果某一列要实现计数功能,必须要使用incr来创建对应的列

使用put创建的列是不能实现累加的

导入测试数据

https://pan.baidu.com/s/1HfVKmsKvCeSiQ3TaUpF7Tw?pwd=1234   提取码:1234

数据集在这

【Hbase】hbase的shell操作(2)

 【Hbase】hbase的shell操作(2)

 导入hbase

【Hbase】hbase的shell操作(2)

 

显示前5行数据\

scan "NEWS_VISIT_CNT",{FORMATTER=>'toString',LIMIT=>5}

【Hbase】hbase的shell操作(2)

 

获取计数器的值命令

语法:

get_counter,’表名’,’rowkey’,’列簇:列名’

get_counter "NEWS_VISIT_CNT",'0000000001_00:00-01:00','C1:CNT'

【Hbase】hbase的shell操作(2)

【Hbase】hbase的shell操作(2) 

 

使用incr进行累加操作

【Hbase】hbase的shell操作(2)

 

shell管理操作

status

显示服务器的状态【Hbase】hbase的shell操作(2)

 

whoami

显示当前用户

【Hbase】hbase的shell操作(2)

 

list

显示当前所有的表

【Hbase】hbase的shell操作(2)

 

count

统计指定表的记录数

【Hbase】hbase的shell操作(2)

 

describe

显示表的结构信息

【Hbase】hbase的shell操作(2)

 

exists

判断某个表是否存,适用于表很多的时候

【Hbase】hbase的shell操作(2)

 

is_enabled、is_disabled

判断表是否启用或禁用

alter

改变表和列簇的模式

【Hbase】hbase的shell操作(2)

其他

disable和enable

禁用和启动表

drop

删除表

truncate

清空表的数据,保留表的结构

hbase shell 操作差不多就是这些了,下一文章(3),将和大家一起学习hbase的java api操作

如遇侵权,请联系删除。文章来源地址https://www.toymoban.com/news/detail-431057.html

到了这里,关于【Hbase】hbase的shell操作(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hbase shell命令

    写于2020年4月17日 hbase shell 进入 hbase 命令行界面 exists tableName tablename 是否存在 scan \\\'Test\\\', {LIMIT=num} 获取前 num 条记录,(貌似 LIMIT 必须要大写,小写会出错) disable \\\'tableName\\\' 禁用表 tableName enable \\\'tableName\\\' 启用表 is_enabled \\\'tableName\\\' 是否可用 is_disabled \\\'tableName\\\' 是否禁用 (一边遇

    2024年01月22日
    浏览(46)
  • HBase常用的Shell命令

    1、创建t1表,列族为f1,版本号为5 create ‘t1’ , {NAME =’f1’ ,VERSION = 5 } 2、创建t1表,3个列族分别为f1、f2、f3 create ‘t1’ , {NAME =’f1’ ,NAME =’f2’ ,NAME =’f3’} 或者 create ‘t1’ , ’f1’ , ’f2’ , ’f3’ 3、创建t1表,将表依据分割算法 HexStringSplit 分布在15个Region里 create ‘

    2024年02月05日
    浏览(40)
  • HBase 常用的Shell命令

    进入shell命令行 基础命令 命令 解释 status 查看集群状态 version 查看当前版本 whoami 查看当前用户 命令演示  ddl命令 命令 解释 create 创建表 list 列出所有表 disable / is_disabled 禁用表/验证表是否被禁用 enable / is_enabled 启用表/验证表是否已启用 desc 查看表的详细信息 alter 修改表结

    2024年02月06日
    浏览(36)
  • HBase Shell 操作

    1.1、进入HBase客户端命令行 前提是先启动hadoop集群和zookeeper集群。 1.2、查看帮助命令 help 查看指定命令的语法规则 查看 list_namespace 的用法(‘记得加单引号’) 我们首先查看现在有哪些命名空间 ,使用指令:list_namespace 注意:我的hadoop版本3.3.0,HBase2.4.17,两者兼容性有问

    2024年02月13日
    浏览(35)
  • Hbase Shell操作

    HBase中用 create 命令创建表,具体如下: 此时,创建了一个“student”表,属性有:name,sex,age,address。可通过 describe 命令查看“student”表的基本信息: 2.1 添加数据 HBase中用 put 命令添加数据. 注意:一次只能为一个表的一行数据的一个列,也就是一个单元格添加一个数据。

    2024年02月15日
    浏览(43)
  • HBase Shell基本操作

    先在Linux Shell命令行终端执行 start-dfs.sh 脚本启动HDFS,再执行 start-hbase.sh 脚本启动HBase。如果Linux系统已配置HBase环境变量,可直接在任意目录下执行 hbase shell 脚本命令,就可进入HBase Shell的命令行终端环境, exit 可以退出HBase Shell(我安装的是伪分布式的HBase)。 (1) help帮

    2024年04月13日
    浏览(38)
  • HBase(11):shell管理操作

    1 status 例如:显示服务器状态   2 whoami 显示HBase当前用户,例如:   3 list 显示当前所有的表 4 count 统计指定表的记录数,例如:     5 describe 展示表结构信息   6 exists 检查表是否存在,适用于表量特别多的情况

    2024年02月12日
    浏览(41)
  • HBase基础及shell操作

    HBase是采用java语言编写的一款 apache 开源的基于HDFS的NoSQL型数据库,不支持 SQL,不支持事务,不支持Join操作,没有表关系 1.不支持事务 2.主要存储结构化数据以及半结构化的数据 3.​HBase中数据存储都是以 字节 的形式来存储的 4.HBase是易于扩展的 1- 大: 在一个表中可以存储上

    2023年04月08日
    浏览(39)
  • HBase高手之路4-Shell操作

    命令 功能 create 创建表 put 插入或者更新数据 get 获取限定行或者列的数据 scan 全表扫描或扫描表并返回表的数据 describe 查看表的结构 count 统计行数 delete 删除指定的行或列的数据 deleteall 删除整个行或者列的数据 truncate 删除表的数据,结构还在 drop 删除整个表(包括数据)

    2023年04月17日
    浏览(41)
  • Hbase安装和shell客户端操作

    HBase 是一个 面向列式存储的分布式数据库 ,其设计思想来源于 Google 的 BigTable 论文。 HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。 HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包