【HBase入门】5. 常用 Shell 操作(2)

前言

我们可以以shell的方式来维护和管理HBase。例如:执行建表语句、执行增删改查操作等等。

导入测试数据集

  • 需求
    在资料的 数据集/ ORDER_INFO.txt 中,有一份这样的HBase数据集,我们需要将这些指令放到HBase中执行,将数据导入到HBase中。
    可以看到这些都是一堆的put语句。那么如何才能将这些语句全部执行呢?在这里插入图片描述
  • 执行command文件
    上传command文件
    将该数据集文件上传到指定的目录中
    执行
    使用以下命令执行:
    hbase shell /export/software/ORDER_INFO.txt
    即可。

计数操作

  • 需求
    查看HBase中的ORDER_INFO表,一共有多少条记录。
  • count命令
    count命令专门用来统计一个表中有多少条数据。语法:
    count ‘表名’
    注意:这个操作是比较耗时的。在数据量大的这个命令可能会运行很久。
  • 获取订单数据
    count 'ORDER_INFO'

大量数据的计数统计

当HBase中数据量大时,可以使用HBase中提供的MapReduce程序来进行计数统计。语法如下:
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter '表名'

  • 启动YARN集群
    启动yarn集群
    start-yarn.sh
    启动history server
    mr-jobhistory-daemon.sh start historyserver
  • 执行MR JOB
    $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'ORDER_INFO'
    通过观察YARN的WEB UI,我们发现HBase启动了一个名字为rowcounter_ORDER_INFO的作业。
    在这里插入图片描述

扫描操作

需求一:查询订单所有数据
  • 需求
    查看ORDER_INFO表中所有的数据
  • scan命令
    在HBase,我们可以使用scan命令来扫描HBase中的表。语法:
    scan '表名'
  • 扫描ORDER_INFO表
    scan 'ORDER_INFO',{FORMATTER => 'toString'}
    注意:要避免scan一张大表!
需求二:查询订单数据(只显示3条)

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

需求三:查询订单状态、支付方式
  • 需求
    只查询订单状态以及支付方式,并且只展示3条数据
  • 命令
    scan 'ORDER_INFO', {LIMIT => 3, COLUMNS => ['C1:STATUS', 'C1:PAYWAY'], FORMATTER => 'toString'}
    注意:[‘C1:STATUS’, …]在Ruby中[]表示一个数组
需求四:查询指定订单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'}

过滤器

简介

在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

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

在这里插入图片描述

Java API官方地址:https://hbase.apache.org/devapidocs/index.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdnGuoYuying

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值