HBase学习4(导入数据、计数器、scan扫描、过滤器)

发布时间 2023-09-13 16:53:43作者: 201812

1.导入数据集

先上传文件到指定目录,后执行下面的语句
hbase shell /export/software/ORDER_INFO.txt

 2.查看表中有多少条数据(计数器)

语法:count ‘表名’

缺点:比较慢,当数据量更大的时候可以使用HBase中提供的MapReduce程序来进行计数统计。

要启动好,需要注意,以下三步不是在hbase shell中输入的,是直接在node1上输入

①yarn,start-yarn.sh;

②启动historyserver,mr-jobhistory-daemon.sh start historyserver或者mapred --daemon start historyserver

语法如下:

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

3.扫描操作(查询大量数据)

在HBase,我们可以使用scan命令来扫描HBase中的表。

语法:scan '表名'

# 查询所有数据,但是避免查询大表(大量数据)
scan 'ORDER_INFO',{FORMATTER => 'toString'}
# 只查询三条数据,中文显示
scan 'ORDER_INFO', {LIMIT => 3, FORMATTER => 'toString'}
# 查询指定列
scan 'ORDER_INFO', {LIMIT => 3, COLUMNS => ['C1:STATUS', 'C1:PAYWAY'], FORMATTER => 'toString'}

4.根据rowkey来查询(添加过滤器)

要查询指定ROWKEY的数据需要添加过滤器,使用ROWPREFIXFILTER。

语法为:scan '表名', {ROWPREFIXFILTER => 'rowkey'}

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

 5.过滤器Filter

文档:http://hbase.apache.org/2.2/devapidocs/index.html

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

 例 rowkey 过滤器:查询订单的ID为:02602f66-adc7-40d4-8485-76b5632b5b53

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

例列过滤器SingleColumnValueFilter:查询状态为「已付款」的订单

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

例:多个过滤器

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

6.HBase计数器INCR

012.HBase计数器_哔哩哔哩_bilibili

incr可以实现对某个单元格的值进行原子性计数。

语法如下:incr '表名','rowkey','列蔟:列名',累加值(默认累加1

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

 

 

7.shell管理操作

013.HBase的管理命令_哔哩哔哩_bilibili