打开 Hbase Shell:git
# hbase shell
# 获取帮助 help # 获取命令的详细信息 help 'status'
status
version
list
命令格式: create '表名称', '列族名称 1','列族名称 2','列名称 N'github
# 建立一张名为Student的表,包含基本信息(baseInfo)、学校信息(schoolInfo)两个列族 create 'Student','baseInfo','schoolInfo'
命令格式:desc '表名'shell
describe 'Student'
enable 和 disable 能够启用/禁用这个表,is_enabled 和 is_disabled 来检查表是否被禁用服务器
# 禁用表 disable 'Student' # 检查表是否被禁用 is_disabled 'Student' # 启用表 enable 'Student' # 检查表是否被启用 is_enabled 'Student'
exists 'Student'
# 删除表前须要先禁用表 disable 'Student' # 删除表 drop 'Student'
命令格式: alter '表名', '列族名'大数据
alter 'Student', 'teacherInfo'
命令格式:alter '表名', {NAME => '列族名', METHOD => 'delete'}code
alter 'Student', {NAME => 'teacherInfo', METHOD => 'delete'}
默认状况下,列族只存储一个版本的数据,若是须要存储多个版本的数据,则须要修改列族的属性。修改后可经过 desc
命令查看。get
alter 'Student',{NAME=>'baseInfo',VERSIONS=>3}
命令格式:put '表名', '行键','列族:列','值'string
注意:若是新增数据的行键值、列族名、列名与原有数据彻底相同,则至关于更新操做it
put 'Student', 'rowkey1','baseInfo:name','tom' put 'Student', 'rowkey1','baseInfo:birthday','1990-01-09' put 'Student', 'rowkey1','baseInfo:age','29' put 'Student', 'rowkey1','schoolInfo:name','Havard' put 'Student', 'rowkey1','schoolInfo:localtion','Boston' put 'Student', 'rowkey2','baseInfo:name','jack' put 'Student', 'rowkey2','baseInfo:birthday','1998-08-22' put 'Student', 'rowkey2','baseInfo:age','21' put 'Student', 'rowkey2','schoolInfo:name','yale' put 'Student', 'rowkey2','schoolInfo:localtion','New Haven' put 'Student', 'rowkey3','baseInfo:name','maike' put 'Student', 'rowkey3','baseInfo:birthday','1995-01-22' put 'Student', 'rowkey3','baseInfo:age','24' put 'Student', 'rowkey3','schoolInfo:name','yale' put 'Student', 'rowkey3','schoolInfo:localtion','New Haven' put 'Student', 'wrowkey4','baseInfo:name','maike-jack'
# 获取指定行中全部列的数据信息 get 'Student','rowkey3' # 获取指定行中指定列族下全部列的数据信息 get 'Student','rowkey3','baseInfo' # 获取指定行中指定列的数据信息 get 'Student','rowkey3','baseInfo:name'
# 删除指定行 delete 'Student','rowkey3' # 删除指定行中指定列的数据 delete 'Student','rowkey3','baseInfo:name'
hbase 中访问数据有两种基本的方式:io
按指定 rowkey 获取数据:get 方法;
按指定条件获取数据:scan 方法。
scan
能够设置 begin 和 end 参数来访问一个范围内全部的数据。get 本质上就是 begin 和 end 相等的一种特殊的 scan。
# 获取指定行中全部列的数据信息 get 'Student','rowkey3' # 获取指定行中指定列族下全部列的数据信息 get 'Student','rowkey3','baseInfo' # 获取指定行中指定列的数据信息 get 'Student','rowkey3','baseInfo:name'
scan 'Student'
scan 'Student', {COLUMN=>'baseInfo'}
# 查询指定列的数据 scan 'Student', {COLUMNS=> 'baseInfo:birthday'}
除了列 (COLUMNS)
修饰词外,HBase 还支持 Limit
(限制查询结果行数),STARTROW
(ROWKEY
起始行,会先根据这个 key
定位到 region
,再向后扫描)、STOPROW
(结束行)、TIMERANGE
(限定时间戳范围)、VERSIONS
(版本数)、和 FILTER
(按条件过滤行)等。
以下表明从 rowkey2
这个 rowkey
开始,查找下两个行的最新 3 个版本的 name 列的数据:
scan 'Student', {COLUMNS=> 'baseInfo:name',STARTROW => 'rowkey2',STOPROW => 'wrowkey4',LIMIT=>2, VERSIONS=>3}
Filter 能够设定一系列条件来进行过滤。如咱们要查询值等于 24 的全部数据:
scan 'Student', FILTER=>"ValueFilter(=,'binary:24')"
值包含 yale 的全部数据:
scan 'Student', FILTER=>"ValueFilter(=,'substring:yale')"
列名中的前缀为 birth 的:
scan 'Student', FILTER=>"ColumnPrefixFilter('birth')"
FILTER 中支持多个过滤条件经过括号、AND 和 OR 进行组合:
# 列名中的前缀为birth且列值中包含1998的数据 scan 'Student', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1998')"
PrefixFilter
用于对 Rowkey 的前缀进行判断:
scan 'Student', FILTER=>"PrefixFilter('wr')"
更多大数据系列文章能够参见 GitHub 开源项目: 大数据入门指南