HBase shell scan 模糊查询
0.进入hbase shell
./hbase shell
help
help “get” #查看单独的某个命令的帮助
1. 一般命令
- status 查看状态
- version 查看版本
2.DDL(数据定义语言Data Definition Language)命令
1. 创建表
create ‘表名称’,’列名称1’,’列名称2’,’列名称3’
如:
create 'member','member_id','address','info'
- 1
2.列出所有的表
list
list ‘abc.*’ #显示abc开头的表
3.获得表的描述
describe ‘table_name’
Table play_error_file is ENABLED
play_error_file
column families description
{
NAME => 'cf',
BLOOMFILTER => 'ROW',#根据应用来定,看需要精确到rowkey还是column。bloom filter的作用是对一个region下查找记录所在的hfile有用。一个region下hfile数量越多,bloom filter的作用越明显。适合那种compaction(压缩)赶不上flush速度的应用。
VERSIONS => '1',# 通常是3,对于更新比较频繁的应用可以设置为1
IN_MEMORY => 'false',
KEEP_DELETED_CELLS => 'FALSE',
DATA_BLOCK_ENCODING => 'NONE',
TTL => 'FOREVER',
COMPRESSION => 'NONE',
MIN_VERSIONS => '0',
BLOCKCACHE =>'true',
BLOCKSIZE => '65536',
REPLICATION_SCOPE => '0'
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
4.删除一个列族 alter,disable, enable
disable 'member' #删除列族时必须先将表给disable
alter 'member',{NAME=>'member_id',METHOD=>'delete'}
#删除后继续enable 'member'
enable 'member'
- 1
- 2
- 3
- 4
5.删除表
disable 'table_name'drop 'table_name'
- 1
- 2
6.查询表是否存在
exists 'table_name'
- 1
7.判断表是否enabled
is_enabled 'table_name'
- 1
8.更改表名
//快照 这样试试,先建立个表自己测试下,可以的话在执行。
需要开启快照功能,在hbase-site.xml文件中添加如下配置项:
<property>
<name>hbase.snapshot.enabled</name>
<value>true</value>
</property>
//命令
hbase shell> disable 'tableName'
hbase shell> snapshot 'tableName', 'tableSnapshot'
hbase shell> clone_snapshot 'tableSnapshot', 'newTableName'
hbase shell> delete_snapshot 'tableSnapshot'
hbase shell> drop 'tableName'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
3.DML(data manipulation language)操作
1.插入
在ns1:t1或者t1表里的r1行,c1列中插入值,ts1是时间
put 'ns1:t1', 'r1','c1','value'or
put 't1','r1','c1','value'or
put 't1','r1','c1','value',ts1
or
put 't1','r1','c1','value',{ATTRIBUTES=>{'mykey'=>'myvalue'}}
put 't1','r1','c1','value',ts1,{ATTRIBUTES=>{'mykey'=>'myvalue'}}
put 't1','r1','c1','value',ts1,{VISIBILITY=>'PRIVATE|SECRET}
# t是table 't1'表的引用
t.put 'r1','c1','value',ts1,{ATTRIBUTES=>{'mykey'=>'myvalue'}}
put 'table_name','row_index','info:age','24'
put 'table_name','row_index','info:birthday','1987-06-17'
put 'table_name','row_index','info:company','tencent'
put 'table_name','row_index','address:contry','china'
put 'table_name','row_index','address:province','china'
put 'table_name','row_index','address:city','shenzhen'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
2.获取一条数据
# 获取一个id的所有数据get 'table_name','row_index'# 获取一个id,一个列族的所有数据get 'table_name','row_index','info'# 获取一个id,一个列族中一个列的所有数据get 'table_name','row_index','info:age'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
3.更新一条记录
将qy的单位改为qq
put ‘table_name’,’qy’,’info:company’,’qq’
4.通过timestrap来获取两个版本的数据
# 得到company为tencent的记录
get 'table_name','qy',{COLUMN=>'info:company',TIMESTRAP=>1321586238965}
# 得到company为qq的数据
get 'table_name','qy',{COLUMN=>'info:company',TIMESTRAP=>1321586271843}
- 1
- 2
- 3
- 4
5.全表扫描
scanner规范:
TIMERANGE,
FILTER,
LIMIT,
STARTROW(start row),
STOPROW(stop row),
ROWPREFIXFILTER(row prefix filter,行前缀)
TIMESTAMP,
MAXLENGTH,
or COLUMNS,
CACHE,
or RAW,
VERSIONS
scan 'hbase:meta'
scan 'hbase:meta',{COLUMNS => 'info:regioninfo'}
scan 'ns1:t1',{COLUMNS=>['c1','c2'],LIMIT=>10,STARTROW=>'xyz'}
scan 't1',{COLUMNS=>'c1',TIMERANGE=>[1303668804,1303668904]}
scan 't1',{REVERSED=>true}
scan 't1',{
ROWPREFIXFILTER=>'row2',
FILTER=>"(QualifierFilter(>=,'binary:xyz'))
AND (TimestampsFilter(123,456))"}
scan 't1',{FILTER => org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1,0)}
scan 't1',{CONSISTENCY=>'TIMELINE'}
设置操作属性:
scan 't1',{COLUMNS => ['c1','c2'],ATTRIBUTES=>{'mykey'=>'myvalue'}}
scan 't1',{COLUMNS=>['c1','c2'],AUTHORIZATIONS=>['PRIVATE','SECRET']}
有个额外的选项:CACHE_BLOCKS,默认为true
还有个选项:RAW,返回所有cells(包括删除的markers和uncollected deleted cells,不能用来选择特定的columns,默认为default)
如:scan 't1',{RAW=>true,VERSIONS=>10}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
全表扫描一般不会用,数据量大的时候会死人的。。
6.删除记录
# 删除id为temp的记录的'info:age'字段
delete 'member','temp','info:age'# 删除整行
deleteall 'member','temp'
- 1
- 2
- 3
- 4
- 5
7.查询表中有多少行
count 'table_name',INTERVAL=>1000,CACHE => 1000or
有对表t1的引用t
t.count
INTERVAL: 每隔多少行显示一次count,默认是1000
CACHE:每次去取的缓存区大小,默认是10,调整该参数可提高查询速度
- 1
- 2
- 3
- 4
- 5
- 6
8.清空表
truncate 'table_name'
HBase是先将表disable,再drop the table,最后creating table。
- 1
- 2
5.scan查询
1.限制条件
scan ‘qy’,{COLUMNS=>’name’}
scan ‘qy’,{COLUMNS=>’name:gender’}
scan ‘qy’,{COLUMNS=>[‘name’,’foo’]}
限制查找条数:
scan ‘qy’,{COLUMNS=>[‘name’,’foo’],LIMIT=>1}
scan ‘qy’,{COLUMNS=>[‘name’,’foo’],LIMIT=>2}
限制时间范围:
scan ‘qy’,{TIMERANGE=>[1448045892646,1448045892647]}
2.filter 过滤部分
PrefixFilter:rowKey前缀过滤
scan ‘qy’,{FILTER=>”PrefixFilter(‘001’)”}
scan ‘qy’,{FILTER=>PrefixFilter(‘t’)}
QualifierFilter:列过滤器
QualifierFilter对列的名称进行过滤,而不是列的值。
scan ‘qy’,{FILTER=>”PrefixFilter(‘t’) AND QualifierFilter(>=,’binary:b’)”}
TimestampsFilter:时间戳过滤器
scan ‘qy’,{FILTER=>”TimestampsFilter(1448069941270,1548069941230)” }
scan ‘qy’,{FILTER=>”(QualifierFilter(>=,’binary:b’)) AND (TimestampsFilter(1348069941270,1548069941270))” }
ColumnPaginationFilter
scan ‘qy’,{FILTER=>org.apache.hbase.filter.ColumnPaginationFilter.new(2,0)}
cannot load Java class org.apache.hbase.filter.ColumnPaginationFilter
hbase shell应用filter
1.导入需要的类
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.filter.SubstringComparator
import org.apache.hadoop.hbase.util.Bytes
- 1
- 2
- 3
- 4
2.执行命令
scan 'tablename',STARTROW=>'start',COLUMNS=>['family:qualifier'],FILTER=>SingleColumnValueFilter.new(Bytes.toBytes('family'),Bytes.toBytes('qualifier'))
- 1
HBase shell scan 模糊查询的更多相关文章
- HBase shell scan 过滤器用法总结
比较器: 前面例子中的regexstring:2014-11-08.*.binary:\x00\x00\x00\x05,这都是比较器.HBase的filter有四种比较器: (1)二进制比较器:如’b ...
- Redis命令:scan实现模糊查询
转: Redis命令:scan实现模糊查询 2017年12月31日 16:54:33 琦彦 阅读数:22893 标签: redis数据库Redis命令scan模糊查询 更多 个人分类: Redis 所 ...
- hbase shell插入根据条件查询数据
hbase shell插入根据条件查询数据 创建并插入数据: hbase(main):179:0> create 'scores','grade','course' hbase(main):18 ...
- 【转】HBase shell命令与 scan 过滤器
Hbase 常用shell命令 https://www.cnblogs.com/i80386/p/4105423.html HBase基础之常用过滤器hbase shell操作 https://www ...
- hbase RowFilter如何根据rowkey查询以及实例实现代码 habase模糊查询【转】
RowFilter用于过滤row key Operator Description LESS 小于 LESS_OR_EQUAL 小于等于 [EQUAL 等于 NOT_EQUAL 不等于 GREATER ...
- HBase Shell操作
Hbase 是一个分布式的.面向列的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统. Hbase不同于一般的关系型数据库(RDBMS ...
- HBase Shell 常用命令及例子
下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N ...
- hbase shell command
进入hbase shell console $HBASE_HOME/bin/hbase shell 如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成 ...
- hbase shell基础和常用命令详解(转)
HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...
随机推荐
- Docker入门-搭建docker私有仓库
Docker Hub 目前Docker官方维护了一个公共仓库Docker Hub,其中已经包括了数量超过15000个镜像.大部分需求都可以通过在Docker Hub中直接下载镜像来使用. 注册登录 可 ...
- Javarscipt中数组或者字符串的随机排序方法
在日常开发中,经常会遇到随机排序的需求,思路就是利用Math.random()方法,抽取随机数,让数组中的元素进行对调: 话不多说直接上代码,方法一:基本思路就是将a中随机抽取一个元素,放入b中,再从 ...
- Spring boot中的 JsonConverter
上图是spring-web包的部分目录 为了找出调用了哪种类型的Convert 我找到父类 HttpMessageConverter 查看了它的引用 在spring-boot-autoconfigur ...
- 解决php - Laravel rules preg_match(): No ending delimiter '/' found 问题
### 说明解决php - Laravel preg_match(): No ending delimiter '/' found 一.遇到问题的原因本正常添加如下 public function r ...
- Python day02 课堂笔记
今天是第二天学习Python课程,主要从格式化输出,逻辑运算,编码,数据类型 这几个方面来学习. 1.格式化输出: % : 占位符 %s:字符串 %d:数字 注意: 在格式化的输出中,如果要输出%(因 ...
- 2019牛客暑期多校训练营(第十场)J - Wood Processing (斜率优化DP)
>传送门< 题意 $n$个宽度为$w_{i}$,高为$h_{i}$ 的 木块,要求分成$k$组,对于每组内的所有木块,高度都变为组内最低木块的高度,宽度保持不变,求变化的最小面积. 分析 ...
- 使用Sigar做后台服务器管理时,遇到的linux上的问题
首先是线下猛如虎,线上惨不忍赌........ 问题的出处是: function change() { /*获取cpu*/ $.ajax({ url: "http://localhost:8 ...
- HOWTO: Amira/Avizo中如何设置数据尺度单位
很多朋友是数据量化完成后,问统计表中的数据尺度单位,这种情况恐怕需要从头再处理一次,所以对于Amira/Avizo的新用户来说,在准备进行量化分析之前就应该设置好尺度单位,设置步骤如下: 1. 在A ...
- pyinstaller打包出错numpy.core.multiarray failed to import
py原文件运行时正常,但用pyinstaller打包为exe后,在运行则报错: 这是因为cv2要求的numpy版本与你装的numpy版本不一样,导致冲突:网上很多说升级numpy,但你把numpy升的 ...
- 原生js之Math对象
1.比较方法(常用) Math.min() //求一组数中的最小值 不能是数组,和对象等等. Math.max() //求一组数中的最大值eg:Math.min(5,3,5) // 3 2.取整(常用 ...