二、表操作
2.1创建表
命令格式1:create ‘表名’,‘列簇名1’,‘列簇名2’…
命名格式2:create ‘表名’,{NAME=>‘列簇名1’},{NAME=>‘列簇名2’}…
#创建一张名为Student的表,包含基本信息(baseinfo)、学校信息(schoolinfo)两个列簇
create'student','haseinfo','schoolinfo'
2.2删除表
#删除表前需要先禁用表
disable 'student'
#删除表
drop'student'
2.3修改表名
命令格式:
snapshot '表名’,‘镜像名’
clone_snapshot‘镜像名’,‘新表名’
delect_snapshot‘镜像名’
snapshot 'student','temp'
clone_snapshot 'temp','stu'
delect_snapshot'temp'
注:可以将原表删除,删除命令参照2.2删除表
2.4查看所有的表
list
2.5查看表的基本信息
命令格式:desc ‘表名’
desc'Student'
2.6检查表是否存在
exists'student'
2.7表的启用和禁用
#禁用表
disable 'student'
#检查表是否被禁用
is_disabled 'student'
#启用表
enable 'student'
#检查表是否被启用
is_enabled'student'
三、增删改
3.1添加列簇
命令格式:alter ‘表名’,‘列簇名’
alter'student','teacherinfo'
3.2删除列簇
命令格式:alter ‘表名’,{NAME=>‘列簇名’,METHOD=‘delete’}
alter'student', {NAME => 'teacherinfo', METHOD => 'delete'}
3.3更改列簇存储版本的限制
默认情况下列族只存储一个版本的数据,如果需要存储多个版本的数据,则需要修改列族的属性。修改后可通过 desc 命令查看。
alter'student',{NAME=>'baseinfo',VERSIONS=>3}
3.4插入数据
命令格式:put ‘表名’,‘行键’,‘列簇名:列名’,‘值’[,时间戳]
put 'student', '1','baseinfo:name','tom'
put 'student','1','baseinfo:birthday','1990-01-09'
put 'student', '1','baseinfo:age','29'
put 'student','1','schoolinfo:name','Havard'
put 'student','1','schoolinfo:localtion','Boston'
put 'student', '2','baseinfo:name','jack'
put 'student','2','baseinfo:birthday','1998-08-22'
put 'student', '2','baseinfo:age','21'
put 'student', '2','schoolinfo:name','yale'
put 'student','2','schoolinfo:localtion','New Haven'
put 'student', '3','baseinfo:name','maike'
put 'student','3','baseinfo:birthday','1995-01-22'
put 'student', '3','baseinfo:age','24'
put 'student', '3','schoolinfo:name','yale'
put 'student','3','schoolinfo:localtion','New Haven'
put'student', '4','baseinfo:name','maike-jack'
3.5获取指定行、指定行中的列族、列的信息
# 获取指定行中所有列的数据信息
get 'student','3'
# 获取指定行中指定列族下所有列的数据信息
get 'student','3','baseInfo'
# 获取指定行中指定列的数据信息
get'student','3','baseinfo:name'
3.6删除指定行、指定行中的列
# 删除指定行
delete 'student','3'
# 删除指定行中指定列的数据
delete'student','3','baseinfo:name'
四、查询
hbase 中访问数据有两种基本的方式:
l 按指定 rowkey 获取数据:get 方法;
l 按指定条件获取数据:scan 方法。scan 可以设置 begin 和
end 参数来访问一个范围内所有的数据。get 本质上就是
begin 和 end 相等的一种特殊的 scan。
4.1get查询
# 获取指定行中所有列的数据信息
get 'student','3'
# 获取指定行中指定列族下所有列的数据信息
get 'student','3','baseinfo'
# 获取指定行中指定列的数据信息
get'student','3','baseinfo:name'
4.2scan查询
#查询整表数据
scan 'student'
#查询指定列簇的数据
scan 'student', {COLUMN=>'baseinfo'}
# 查询指定列的数据
scan 'student', {COLUMNS=>'baseinfo:birthday'}
# 查看指定列两个版本的数据
scan 'student', {COLUMNS=>'baseinfo:birthday',VERSIONS=>2}
# 查看前3条数据
scan'student',{LIMIT=>3}