本节通过一个具体的编程实例来学习说明如何使用HBase Java API解决实际问题。在本实例中,首先创建一个学生成绩表scores,用来存储学生各门课程的考试成绩,然后向scores添加数据。表scores的概念视图如表6-5所示,学生的名字name为行键,年级grade是一个只有一个列的列族,score是一个列族,每一门课程都是score的一个列,如english、math、Chinese等。score的列可以随时添加。例如,后续学生又参加了其他课程的考试,如computing、physics等,那么就可以添加到score列族。因为每个学生参加考试的课程也会不同,所以,并不一定表中的每一个单元都会有值。在该实例中,要向学生成绩表scores中添加的数据如表6-6所示。
表6-5 学生成缋表scores的概念视图
表6-6 学生成绩表scores的数据
(1)程序框架。
首先,实例化configuration对象,建立与HBase连接;其次,在建立连接的数据库中,创建表和插入数据;最后,表中所插入的浏览课程成绩。程序代码的主要框架如下:
(2)建立HBase连接和关闭连接。
1)建立HBase连接。
在使用HBase数据库前,必须首先建立连接,通过连接可以获取Admin子类,完成对数据库模型的操作。建立连接的代码如下。
代码中,首先为configuration配置对象设置HBase数据库的存储路径hbase.rootdir。本实例使用HDFS作为HBase的底层存储方式,所以在代码中把configuration的第二个参数赋值为HDFS://localhost:9000/hbase。
2)关闭数据库连接。
对HBase数据库操作结束之后,需要关闭数据库的连接,具体代码如下。
(3)创建表。
创建HBase数据库表的时候,首先需要定义表的模型,包括表的名称、行键和列族的名称。具体代码如下。
(www.xing528.com)
注意,在调用上述代码创建学生成绩表scores时,需要指定参数myTableName为“scores”,colFamily为“{"grade","score"}”,即createTable("scores",{"grade","score"})。
(4)添加数据。
为HBase数据库表添加数据,需要指定行键、列族、列限定符、时间戳,其中,时间戳可以在添加数据时由系统自动生成。因此,向表里添加数据时,需要提供行键、列族和列限定符及数据值信息,具体代码如下。
注意,使用上述代码添加数据时,需要分别为参数tableName、rowKey、colFamily、col和val赋值。例如,要添加图2的第一个学生的数据,就需要使用如下4行代码。
insertData("scores","dandan","grade","","6");
insertData("scores","dandan","score","english","95");
insertData("scores","dandan","score","math","100");
insertData("scores","dandan","score","Chinese","92");
同样,可通过以下代码,添加第二个学生的数据。
insertData("scores","sansan","grade","","6");
insertData("scores","sansan","score","english","87");
insertData("scores","sansan","score","math","95");
insertData("scores","sansan","score","Chinese","98");
(5)浏览数据。
在向数据库表添加数据以后,就可以查询表中的数据了。
同样,在使用上述代码查询学生课程的成绩时,需要进行参数赋值。例如,查询学生“dandan”的“math”课程的成绩,其实现代码为:getData("scores","dandan","score","math")。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。