0.进入hbase shell

./hbase shell 
help 
help “get” #查看单独的某个命令的帮助

1. 一般命令

  1. status 查看状态
  2. 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 模糊查询的更多相关文章

  1. HBase shell scan 过滤器用法总结

    比较器: 前面例子中的regexstring:2014-11-08.*.binary:\x00\x00\x00\x05,这都是比较器.HBase的filter有四种比较器: (1)二进制比较器:如’b ...

  2. Redis命令:scan实现模糊查询

    转: Redis命令:scan实现模糊查询 2017年12月31日 16:54:33 琦彦 阅读数:22893 标签: redis数据库Redis命令scan模糊查询 更多 个人分类: Redis 所 ...

  3. hbase shell插入根据条件查询数据

    hbase shell插入根据条件查询数据 创建并插入数据: hbase(main):179:0> create 'scores','grade','course' hbase(main):18 ...

  4. 【转】HBase shell命令与 scan 过滤器

    Hbase 常用shell命令 https://www.cnblogs.com/i80386/p/4105423.html HBase基础之常用过滤器hbase shell操作 https://www ...

  5. hbase RowFilter如何根据rowkey查询以及实例实现代码 habase模糊查询【转】

    RowFilter用于过滤row key Operator Description LESS 小于 LESS_OR_EQUAL 小于等于 [EQUAL 等于 NOT_EQUAL 不等于 GREATER ...

  6. HBase Shell操作

    Hbase 是一个分布式的.面向列的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统.     Hbase不同于一般的关系型数据库(RDBMS ...

  7. HBase Shell 常用命令及例子

    下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N ...

  8. hbase shell command

    进入hbase shell console $HBASE_HOME/bin/hbase shell 如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成 ...

  9. hbase shell基础和常用命令详解(转)

    HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...

随机推荐

  1. CodeForces 939F Cutlet

    洛谷题目页面传送门 & CodeForces题目页面传送门 题意见洛谷里的翻译. 这是一道毒瘤的div. 2 F,我是不可能比赛的时候做出来的... (以下设两面都要煎\(n\)分钟,有\(m ...

  2. C++7行代码实现求最大公约数

    最近在做奥赛题时碰到求最大公约数的问题,给出解决方案: int gcd(int a,int b){ int tmp = a%b; ){ return b; } else{ return gcd(b,t ...

  3. Cause: java.lang.NumberFormatException: For input string: "D"

    异常:Cause: java.lang.NumberFormatException: For input string: "D" 问题回显: 原因分析:'D'只有1位,被认为是ch ...

  4. js中toFixed精度问题的解决办法

    toFixed() 方法可把 Number 四舍五入为指定小数位数的数字.例如将数据Num保留2位小数,则表示为:toFixed(Num):但是其四舍五入的规则与数学中的规则不同,使用的是银行家舍入规 ...

  5. jsp和servlet开发过程中参数传递乱码问题总结

    1.前言 相信很多初学者在学习javaWeb基础知识时,总会遇到各种各样的乱码问题,我也是从那个时候过来的.当时遇到各种乱码问题,只能通过面向百度的方式,解决各种乱码问题,乱码虽然问题能解决,但是总是 ...

  6. python 05 字典

    [TOC] 字典——dict { } 字典是无序,可变的数据类型. 字典:用于存储数据,存储大量数据,字典要比列表快:将数据和数据之间进行关联. 1. 定义:  dic = {键:值,键:值}  #每 ...

  7. 如何替换ROS中默认的Planner

    官方文档参阅:http://wiki.ros.org/pluginlib 有时候,可能会需要将替换ROS默认的planner替换成别的planner或我们自己的planner.这就涉及到了新plann ...

  8. 堆、栈、内存分配、==、equals、hashcode详解(转载)

    问题的引入: 问题一:String str1 = "abc";String str2 = "abc";System.out.println(str1==str2 ...

  9. NLP(一)语料库和WordNet

    访问语料库 NLTK数据库的安装:http://www.nltk.org/data.html NLTK语料库列表:http://www.nltk.org/nltk_data/ 内部访问(以Reuter ...

  10. JavaScript入门之AJAX:原生ajax

    背景 传统的Web应用允许用户端填写表单(form),当提交表单时就向网页服务器发送一个请求.服务器接收并处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部分H ...