HBase常用Shell命令
HBase中用create命令创建表:
1 | create 'Student','Num','Name','Sex','Age' |
运行结果如下:
1 | hbase(main):008:0> create 'Student','Num','Name','Sex','Age' |
此时,即创建了一个’Student’表,属性有:Num,Name,Sex,Age。因为HBase的表中会有一个系统默认的属性作为行键,无需自行创建,默认为put命令操作中表名后第一个数据。创建完“student”表后,可通过describe命令查看“student”表的基本信息。
HBase数据库基本操作:
添加数据-put:
HBase中用put命令添加数据,注意:一次只能为一个表的一行数据的一个列,也就是一个单元格添加一个数据,所以直接用shell命令插入数据效率很低,在实际应用中,一般都是利用编程操作数据。
在添加数据时,HBase会自动为添加的数据添加一个时间戳,故在需要修改数据时,只需直接添加数据,HBase即会生成一个新的版本,从而完成“改”操作,旧的版本依旧保留,系统会定时回收垃圾数据,只留下最新的几个版本,保存的版本数可以在创建表的时候指定。
当运行命令:put ‘Student’,’1001’,’ZhangSan’,male’,’23’时,即为Student表添加了学号为1001,姓名为ZhangSan,性别男,年龄23的一条数据。行键为1001.
1 | put 'Student','1001','ZhangSan',male','23' |
删除数据:
在HBase中用delete以及deleteall命令进行删除数据操作,它们的区别是:1. delete用于删除一个数据,是put的反向操作;2. deleteall操作用于删除一行数据。
1 | delete 'Student','1001','Age' |
查看数据:
HBase中有两个用于查看数据的命令:1. get命令,用于查看表的某一行数据;2. scan命令用于查看某个表的全部数据
1 | get 'Student','1001' |
删除表:
删除表有两步,第一步先让该表不可用,第二步删除表。
1 | disable 'Student' |
查询表历史数据:
查询表的历史版本,需要两步。
1、在创建表的时候,指定保存的版本数(假设指定为5)
1 | create 'Student',{NAME=>'username',VERSIONS=>5} |
2、插入数据然后更新数据,使其产生历史版本数据,注意:这里插入数据和更新数据都是用put命令
1 | put 'Student','1001','username','Mary' |
3、查询时,指定查询的历史版本数。默认会查询出最新的数据。(有效取值为1到5)
1 | get 'Student','1001',{COLUMN=>'username',VERSIONS=>5} |
退出HBase数据库表操作:
最后退出数据库操作,输入exit命令即可退出,注意:这里退出HBase数据库是退出对数据库表的操作,而不是停止启动HBase数据库后台运行。
HBase API详解
写HBase程序,需导入hbase安装目录中的lib文件中的所有jar包就行。
HBase常用API介绍:
Admin:
HBase的管理API。从connecgetadmin()获取一个实例,然后调用close()。
Admin可用于创建、删除、列出、启用和禁用表、添加和删除表列家庭和其他行政操作。
Admin的常用方法:
1 | //判断表是否存在 |
Connection:
一个集群连接,将较低层次的个人连接封装到实际的服务器上,并连接到zookeeper。连接通过ConnectionFactory类实例化。连接的生命周期由调用者管理,后者必须close()连接以释放资源。
连接对象包含找到master的逻辑,定位集群上的区域,保留一个位置的缓存,然后知道如何在移动后重新校准。与服务器、元缓存、zookeeper连接等的个人连接都是由Table和Admin从该连接获得的管理实例共享的.
连接创建是一个重量级的操作。连接实现是线程安全的,因此客户端可以创建一次连接,并与不同的线程共享它。另一方面,Admin和Table实例是轻量级的,并且不是线程安全的。通常,每个客户端应用程序的单个连接被实例化,并且每个线程都将获得它自己的表实例。不建议对Table和Admin进行缓存或合用。
Connection的常用方法:
1 | void close()//关闭连接 |
Table:
用于与单个HBase表进行通信。从连接中获取一个实例,然后调用close().
表格可用于从表中获取、放置、删除或扫描数据。
HTableDescriptor:
HTableDescriptor包含关于HBase表的详细信息,例如所有列家族的描述符,是表a目录表,-根-或HBase:meta,如果表只读取,memstore的最大大小,当区域拆分时,与之关联的协处理器等等。
##HBase编程示例:
1 | import org.apache.hadoop.conf.Configuration; |
以上内容为听华为大数据培训课程和大学MOOC上厦门大学 林子雨的《大数据技术原理与应用》课程而整理的笔记。
大数据技术原理与应用: https://www.icourse163.org/course/XMU-1002335004