hbase建表,删表,修改,查询(get,scan,布隆过滤器)

建表

直接建表:

create ‘表名’,‘列族名'

如果之后想加入新的列族:

alter ‘表名’,‘列族名’

补充:

alter ‘表名’,{NAME=‘列族名’,属性1=>属性值 1,属性2=>属性值2}{NAME=>‘列族名2’ ,属性 1=>属性值1.....}

如果是不存在的列族,就是添加,如果是已存在的列族,就是修改属性.(eg:version,bloofilter,ttl…)
其中Alter 允许的列族级别属性 BLOOMFILTER, COMPRESSION ,TTL, BLOCKSIZE, BLOCKCACH …

如果建表时想加入一些设置:

create ‘表名’,{NAME=>‘列族名’,VERSIONS=>‘’,BLOCKCACHE=>‘’, BLOOMFILTER=>‘’,COMPRESSION=>‘’,TTL=>‘’},{NAME=>’列族名’, 属性=>属性值........}

bloomfilter是设置布隆过滤器(一般是none,可以设置为row,rowcol),compression是设置数据压缩方式,TTL是设置数据过期时间
查看表的属性:

describe '表名‘

删除表:

Disable '表名‘
drop ‘表名‘

删除列族:

alter‘表名’,delete=>’列族名’

判断表是否存在:

exists '表名‘

为某列族的某列数据拼接后缀数据:

Append ‘表名’,‘行键’,‘列名’,‘拼接值’

删除某个列族的某个字段数据:

delete ‘表名’,‘行键’,‘列族:列’

插入数据put

put只能每次插入一个行键对应的一个列族的一个列属性的值,不能直接插入多条数据,区别mysql的一条语句查询。
eg:

put  'student','001','grade:Database',92
put  'student','001','grade:Math',98
put 'student','003','doom:phone',1110989009

hbase查询

list

hbase所有属性:columns,startrow,endrow,timerange,versions,fliter,limit

get

get是直接使用的行键进行查询是索引查找,速度最快
无论是get还是scan都使用[ ]来查询多个列族字段的数据或者查询时间戳范围数据,如columns=>[‘info:name’,‘info:sno’,‘grade:Database’],如果只是一个列族的单字段数据可以不使用[ ]
eg:
versions=>3表示取过去3个版本的数据,但是前提是需要先设置当前字段有三个版本

get 'student','001',{COLUMNS=>['info:name','info:sno'],TIMERANGE=>[1639034014464,1639034055161],VERSIONS=>3}

scan

scan是基于范围查找,另外Scan命令若不指定显示的版本数,则显示拥有最大(最 新)时间戳的数据版本。
直接查看表中的前10行数据:

scan 'student'{LIMIT=>10}

更广用法:
eg:

scan 'student',{COLUMNS=>['info:name' ,'info:dept' ], STARTROW=>'002',STOPROW=>'005',TIMERANGE=>[1639034014464,1639034055161],VERSIONS=>3}

如果想要显示所有版本数据就必须加上versions

布隆过滤器

查找形式多样,支持多种形式的查找
RowFilter
行键过滤器
查询student表中rowkey中包含123的数据。

scan 'student', {FILTER=> "RowFilter(=,'substring:123')"}

ValueFilter
值过滤器
查询student表中值包含123的数据,因为hbase在存储的时候是以key-value格式的列式存储,在查询遍历的时候每行每列都会遍历,所以才有这个过滤器.
除了可以查询等于,也可以查询大于、大于等于、小于、小于等于、不等于,比较的方式是字典排序。
除非在数据存储的时候存储的类型为数字类型。
substring:包含的意思、binary:精确查询、regexstring:正则匹配、null:空值比较、long:数字比较

scan 'student',{FILTER=> "ValueFilter(=,'substring:123')"}

SingleColumnValueFilter
单列值过滤器
查询student表中列簇为info.列名为server的所有数据。
注意:在使用单列值过滤器必须保证每行数据都有要查询的列,因为查询结果也会返回没有要查询的列的整行记录。

scan 'student',{FILTER=>"SingleColumnValueFilter('info','server',=,'binary:chds-2:60020')"}

PrefixFilter
行键前缀过滤器
查询student表中行键以123开头的所有数据

scan 'student',{FILTER=>"PrefixFilter('123')"}

ColumnPrefixFilter
单列名前缀过滤器
查询student表中以server开头的列的所有数据

scan 'student',{FILTER=>"ColumnPrefixFilter('server')"}

MultipleColumnPrefixFilter
多列名前缀过滤器
查询student表中以server和regioninfo开头的列的所有数据

scan 'student',{FILTER=>"MultipleColumnPrefixFilter('servedr','regioninfo')"}

PageFilter
分页过滤器
分页过滤器要和startRow搭配使用,和LIMIT功能类似。
过滤器搭配使用的时候分页过滤器要放在最后。
但是如果是页面开发使用java api操作,分页过滤器有一个缺点就是必须一页一页翻页,因为要传递startRow的值,和ES的深度分页类似

scan 'student',{FILTER=>"PageFilter(2)",STARTROW=>''}
scan 'student',{LIMIT=>2,STARTROW=>''}

InclusiveStopFilter
包含结尾过滤器
endRow在使用过程中查询结果不包括endRow,可以搭配使用这个过滤器。

scan 'student',{STARTROW=>'',ENDROW=>'',FILTER=>"InclusiveStopFilter('')"}

FamilyFilter
列簇过滤器

scan 'student',{FILTER=>"FamilyFilter(=,'binary:info')"}

QualifierFilter
列名过滤器

scan 'student',{FILTER=>"QualifierFilter(=,'binary:server')"}

SingleColumnValueExcludeFilter
单列值不包含过滤器,和单列值过滤器类似

scan 'student',{FILTER=>"SingleColumnValueExcludeFilter('info','server',=,'binary:13270')
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

看不见的罗辑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值