Hbase学习 启动./start-hbase.sh
$hbase shell #启动hbase shell 光标在哪里删除键删哪里 退出shell exit
创建表 create '表名称', '列名称1','列名称2','列名称N'
#创建一个新表student
create 'student','info'
create 'test','data'
create 'member','member_id','address','info'
#查看所有的表
list
#查看student的表结构
describe 'student'
describe 'member'
添加列族
disable 'test'
alter 'test',{NAME=>'info',VERSIONS => 3}
enable 'test'
添加记录 put '表名称', '行名称', '列名称:', '值'
#同student表中插入一条数据
put 'student','mary','info:age','19'
put 'test','hang1','data:1','value1'
put 'test','hang2','data:2','value2'
put 'test','hang2','info:age','24'
put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:company','alibaba'
put'member','scutshuxue','address:province','zhejiang'
put'member','scutshuxue','address:contry','china'
查看所有记录 scan "表名称"
#查看数据插入结果 全表扫描
scan 'test'
scan 'member'
查看某个表某个列中所有数据 scan "表名称" , ['列名称:']
scan 'test','data'
查看记录 get '表名称', '行名称'
#从student表中取出mary的数据
get 'student','mary'
获取一个id,一个列族的所有数据
get 'member','scutshuxue','info'
删除一个列族,alter, disable,enable
alter 'member',{NAME=>'member_id',METHOD=>'delete'}
删除记录 delete '表名' ,'行名称' , '列名称'
delete 'test','hang1','data:1'
delete 'member','scutshuxue','info:age'
删除一张表 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称'
#让student表失效
disable 'student'
#让student表有效
enable 'student'
#删除student表
drop 'student'
查看表中的记录总数 count '表名称'
count 'test'
更新一条记录,原理插入新值替换掉旧值
put 'member','scutshuxue','info:age' ,'99'
get 'member','scutshuxue','info:age'
通过timestamp来分布获取两个版本的数据
get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1448094932721}
get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1448094997311}
查询服务器状态
status
查询hive版本
version
判断表是否enable
is_enabled 'member'
查询表是否存在
exists 'member'
将整张表清空
truncate 'member'
简化从hbase中查询数据
1、hive有这样的功能/速度慢适用于数据分析
2、scan是用来查询数据的, 因此我们需要将sql语句转成scan
sql语句 --sql解析器--> sql语法节点(对象) -> scan -> hbase -> ResultScanner -> List<DynaBean>
select a, b from table1 where a = 1 and b = 2
// 要查询的表
HTable table = new HTable(conf, "table1");
// 要查询的字段
Scan scan = new Scan();
scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("a"));
scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("b"));
// where条件
// a = 1
SingleColumnValueFilter a = new SingleColumnValueFilter(Bytes.toBytes("cf"),
Bytes.toBytes("a"), CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(1)));
filterList.addFilter(filter);
// b = 2
SingleColumnValueFilter b = new SingleColumnValueFilter(Bytes.toBytes("cf"),
Bytes.toBytes("b"), CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(2)));
// and
FilterList filterList = new FilterList(Operator.MUST_PASS_ALL, a, b);
scan.setFilter(filterList);
DDL:数据库模式定义语言,关键字:create
DML:数据操纵语言,关键字:Insert、delete、update
DCL:数据库控制语言 ,关键字:grant、remove 用来授予或回收访问数据库的某种特权,并控制
DQL:数据库查询语言,关键字:select