分布式数据库HBase 课件 单元8 HBase综合实战.pptx
单元8HBase综合实战
18.2商品订单表设计目录8.1MySQL数据迁移到HBase2
8.1MySQL数据迁移到HBase本案例的数据以学生课程成绩为例,在MySQL数据库中将实体和实体间的关系都存储在数据库中,本例中的实体有学生和课程,分别对应学生信息表studentInfo和课程信息表courseInfo,实体之间的关系为选课及成绩,对应成绩表gradeInfo,这三张表的结构如图8-1所示。
8.1MySQL数据迁移到HBaseHBase表将MySQL三张表的数据聚合到同一张表中,将studentInfo表映射到HBase的StuInfo列族,将gradeInfo和courseInfo表信息映射到Grades列族中,使用HBase列族形式将数据整合到一起,用户查询起来会更加方便,同时对出现大量空值的场景,可以节约大量的存储空间。步骤1:创建coursesel.sql文件。2.登陆MySQL,创建数据库,如下。createdatabasecoursesel;
8.1MySQL数据迁移到HBase步骤2:通过JavaAPI读取MySQL数据中学生信息表studentInfo内容1.注册数据库的驱动2.打开数据库链接。3.获取学生表studentinfo基本信息。4.获取课程信息。
8.1MySQL数据迁移到HBase步骤3:将MySQL数据导入HBase表。1.创建HBase表,通过JavaAPI连接HBase,创建表courseGrade2将MySQL数据导入HBase的courseGrade表向列族中插入数据。连接MySQL数据库读取结果集,将查询到的studentinfo表的学号信息作为rowKey,表中的姓名、年龄、性别作为列族StuInfo的列。通过MySQL连接查询语句,指定查询条件为学号,查询到对应的课程名和成绩作为列族Grades的列名和对应的单元格值。执行完成后,执行hbaseshellhbase:003:0scancourseGrade
8.1MySQL数据迁移到HBase步骤3:将MySQL数据导入HBase表。3查询数据可获取某个学生所选课程的成绩。以下示例表示获取学号为1的学生的所有课程信息。执行完成后,执行结果如图所示。
8.1MySQL数据迁移到HBase步骤3:将MySQL数据导入HBase表。1.创建HBase表,通过JavaAPI连接HBase,创建表courseGrade2将MySQL数据导入HBase的courseGrade表向列族中插入数据。连接MySQL数据库读取结果集,将查询到的studentinfo表的学号信息作为rowKey,表中的姓名、年龄、性别作为列族StuInfo的列。通过MySQL连接查询语句,指定查询条件为学号,查询到对应的课程名和成绩作为列族Grades的列名和对应的单元格值。执行完成后,执行hbaseshellhbase:003:0scancourseGrade
8.2商品订单表设计8.2.1生成商品订单表数据步骤1:生产电商订单数据,这里通过python脚本生成数据。步骤2:将python脚本上传到集群系统/opt目录下,通过pyhon命名执行,具体命令如下。其中/opt/data.py为脚本,/opt/datas/goods.log为产生文件,1000为goods.log产生的文本记录数。python/opt/data.py/opt/datas/goods.log1000步骤3:将产生的goods.log分别传输到本地文件E:\\data目录下以及上传HDFS文件系统。Hdfsdfs-putgoods.log/hbase/input步骤4:通过HBaseshell创建表goods
8.2商品订单表设计8.2.2HBase的JavaAPI方式写入HBase步骤1:新建Maven工程,步骤参考第五章内容。新建PutGoods类,在PutGoods中设置字符数组形式,将除rowkey外其他的字段表示为“列族:列名”形式。通过BufferedReader对象读取文件每一行数据,调用Put对象将读取到的一个字段依次放入到HBase表。步骤2:此时通过hbaseshell计算goods的行数,结果如下所示。通过统计发现python脚本生成的1000条记录全部加载到HBase表中。hbase:005:0countgoodsCurrentcount:1000,row:9991714394607