Hbase实践操作
Posted 大数据的那些事
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase实践操作相关的知识,希望对你有一定的参考价值。
1、 创建表
hbase通过create命令创建一个表,如create 'music_table', 'meta_data', 'action',这条语句创建一个名为music_table的表,这个表有两个列族,
meta_data和action。列族不要太多,因为每个列族对应一个文件,列族太多检索效率会很低。
配合着看一下hadoop的hbase的目录
Hdfs中有个hbase的目录。
我们的数据存储在/hbase/ data中,打开这个目录,里面有个子目录default,我们的数据就存储在这个文件中。
打开default这个目录,发现有个子目录与我们的表名对应。
2、 查看表结构信息
describe查看表的描述信息
可以查看到这个表的版本号
3、修改表
1)添加一个新的列族:
alter 'badou_music_table',{NAME=>'flags',VERSIONS=>3,IN_MEMORY=>true}
VERSIONS=>3表示可以保留3个版本,IN_MEMORY=>true表示这个数据存在内存中。这时添加列族的方法。
2)修改数据:
put 'badou_music_table', '1001', 'meta_data:name', 'elangchuanshuo'
重新查看数据
3)删除列族
alter 'music_table',{NAME=>'action',METHOD=>'delete'}
注意:删除列族并不需要disable。删除表需要。
4、删除一个表:
1) disable 'badou_music_table'
2) drop 'badou_music_table'
注意:一定要打单引号
5、添加数据:
put 'badou_music_table', '1001', 'meta_data:name', 'wangqingshui'
通过get一个rowkey的方式去查看添加进去的数据是否存在:
添加数据的时候列名可以随便写,如果指定的列名不存在则会动态的添加一个列名。
7、删除数据:
删除指定rowkey的所有列族用deleteall命令,删除指定rowkey的指定列用delete命令。例如命令deleteall 'music_table','m_2',表示删除music_table表的m_2这个rowkey所有数据;命令delete 'music_table','m_1',' meta_data:desc',表示删除music_table表的m_1这个rowkey的desc'这一列的数据。
8、修改列族的版本数
Hbase中的列族默认1个版本,可以用describe进行查看,如下:
这个默认的版本数可以修改,alter 'music_table',{NAME=>'meta_data', VERSIONS =>3}
修改之后再往music_table表中插入数据:
put 'music_table','m_1','meta_data:name','zhangxueyou'
put 'music_table','m_1', 'meta_data:name','chenyixun'
然后通过get命令获取数据,不仅可以获取当前的数据,历史数据也可获得:
get 'music_table','m_1'
get 'music_table','m_1',{COLUMN=>'meta_data:name'}
get 'music_table','m_1',{COLUMN=>'meta_data:name',VERSIONS=>3}
9、采用truncate命令清空表数据:
truncate 'tablename'
10、查看表数据
查看表数据可以用get,也可以用scan。get是对于某个rowkey,scan是用于多个rowkey。scan相当于把全表扫描,生产环境scan命令一定不要执行,除非你想被fire。要用scan可以加条件。
11、对region进行分裂
下图为在一个浏览器上对一个表进行访问,查看这个表的region信息,这个region的id为'24b8d58c0814fdcbd6526343f3c28ef3'。
Region会随着数据量的增大而逐渐分裂为多个,也可以通过命令手动分裂。split 'music_table ','24b8d58c0814fdcbd6526343f3c28ef3'。这条命令将这个region分裂为两个,如图所示:
这个分裂是按数据大小平均分隔。一行不可再分,不可能在两个region中。我们也可以在建表时就给这个表分好region,如命令create 'badou_table', 'f1' ,SPLITS=>['100','1000','2000']。在建表时就分好了4个region,小于100的为一个region,100-1000的为一个region,1000-2000的为一个region,大于2000的为一个region。
12、合并region
通过merge命令可以对region合并操作。
merge_region '538a9c2822038e511fc085663ee9b32d','2ba9235ee32a3b2f34e2ac7b24fafaf6'
13、查找历史数据:
把之前被覆盖的数据找出来:(只需要找到wangqingshui的时间戳就行了)
get 'badou_music_table', '1001',{COLUMN=>'meta_data:name',TIMESTAMP=>1513695086641}
14、以脚本的形式去执行hbase操作
hbase的命令行界面不好操作,所以在实际工作中,我们很少这样去执行,通常都是以脚本的方式去执行,如下是一个hbase的执行脚本:
在命令行上执行hbase shell 文件名,即可。在脚本中如果不加上exit,则执行完这个脚本,终端仍停留在hbase-shell阶段。
以上是关于Hbase实践操作的主要内容,如果未能解决你的问题,请参考以下文章