hbase 常用的shell 命令

hbase 查询通用shell命令
(>=意思为包含,=意思是等于)
1.
按family(列族)查找,取回所有符合条件的“family”:
scan ‘scores’, {FILTER => “FamilyFilter(<=,‘binary:grc’)”}
或者
scan ‘scores’, {FILTER => “FamilyFilter(<=,‘binary:grc’)”}
在这里插入图片描述
2.
类似于FamilyFilter,取回所有符合条件的“列:
scan ‘scores’, {FILTER => “QualifierFilter(=,‘binary:b’)”}
在这里插入图片描述
3.
类似于FamilyFilter,符合条件的row都返回:
scan ‘scores’, {FILTER => “RowFilter(<=,‘binary:zhangsan01’)”}
在这里插入图片描述
4.
PrefixFilter,取回rowkey以指定prefix开头的所有行:
scan ‘scores’, {FILTER => org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes(‘li’))}
或者
scan ‘scores’, {FILTER => “PrefixFilter(‘li’)”}
在这里插入图片描述
5.
由于其原生带有PrefixFilter这种对ROWKEY的前缀过滤查询,因此想着实现的后缀查询的过程中,发现这一方面相对来说还是空白。因此,只能采用一些策略来实现,主要还是采用正则表达式的方式:
scan ‘scores’, {FILTER => “RowFilter(=,‘regexstring:.*n01’)”}
在这里插入图片描述
6
scan ‘scores’, {FILTER => “ColumnPrefixFilter(‘ar’)”}
或者
scan ‘scores’, {FILTER => org.apache.hadoop.hbase.filter.ColumnPrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes(‘ar’))}

在这里插入图片描述
7.
MultipleColumnPrefixFilter
a,返回有此前缀的所有列,
b,在byte[][]中定义所有需要的列前缀,只要满足其中一条约束就会被返回(ColumnPrefixFilter的加强版)
scan ‘scores’, {FILTER => “MultipleColumnPrefixFilter(‘ar’,‘ma’)”}
在这里插入图片描述

ColumnCountGetFilter
a,无法再scan中使用,只能在Get中
b,若设为0,则无法返回数据,设为几就按服务器中存储位置取回几列
c,可用size()取到列数,观察效果
scan ‘scores’, {FILTER => “ColumnCountGetFilter(2)”}
在这里插入图片描述

ColumnPaginationFilter
a,limit 表示返回列数
b,offset 表示返回列的偏移量,如果为0,则全部取出,如果为1,则返回第二列及以后
scan ‘scores’,{FILTER=>org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(2,1)}
或者
scan ‘scores’,{FILTER=> “ColumnPaginationFilter(2,1)”}
在这里插入图片描述

ColumnRangeFilter
构造函数:
ColumnRangeFilter(byte[] minColumn, boolean minColumnInclusive, byte[] maxColumn, boolean maxColumnInclusive)
*可用于获得一个范围的列,例如,如果你的一行中有百万个列,但是你只希望查看列名为bbbb到dddd的范围
*该过滤器可以进行高效的列名内部扫描。(为何是高效呢???因为列名是已经按字典排序好的)HBase-0.9.2 版本引入该功能。
*一个列名是可以出现在多个列族中的,该过滤器将返回所有列族中匹配的列
scan ‘scores’,{FILTER=> “ColumnRangeFilter(‘a’,true,‘n’,true)”}
在这里插入图片描述

PageFilter:取回XX条数据
scan ‘scores’, {FILTER => “PageFilter(2)”}
在这里插入图片描述

12
TimestampsFilter
a,按时间戳搜索数据库
b,需设定List 存放所有需要检索的时间戳
scan ‘scores’, {FILTER => “TimestampsFilter(1498003561726,1498003601365)”}

在这里插入图片描述

13.Hbase根据rowkey批量删除数据

  1. echo "scan ‘ihr:sehr_tags’ " |hbase shell|awk –F > ./file.txt
  2. 创建一个sh文件,将1中的文件写到
    cat ./file.txt|awk ‘{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲'|while read ro…{tablename}’,’${rowvalue}’" >> ./deleteRowFile.txt
    done
    然后执行sh文件,
    在这里插入图片描述

#为避免线上执行失误 ,先检查deleteRowFile.txt中要删除的rowkey是否正确,所以以下两行命令请手动执行
#hbase shell ./deleteRowFile.txt
#rm ./deleteRowFile.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值