统计govdata中,统计每年的信件数量,并将结果导到mysql中。
1.首先在Hive中,创建一张表,命名为lenum,用于存储统计结果。
- create table lenum(
- year string,
- num int
- )
- row format delimited
- fields terminated by '\t'
- stored as textfile;
lenum表,有两个字段:设备类型及设备数量
在Hive中,统计每年信件数量,并将结果临时存储在hive中的lenum表中。
- insert into table lenum
- select
- substr(shijian,0,4) as dt,
- count(1) as num
- from govdata
- group by substr(shijian,0,4)
- order by num;
查看lenum表。
- select * from lenum;
3.新打开一个命令行终端,连接Mysql(密码:strongs)
- mysql -u root -p
在mysql中,创建名为edu4out的数据库,用于存储导过来的数据
- CREATE DATABASE IF NOT EXISTS edu4out DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
- use edu4out
在Mysql中创建名为lenumsql的表,用于储蓄Hive中lenum表的数据。此表也包含两个字段时间及数量
- create table lenumsql (time varchar(10),num int);
4.再新开启一个终端模拟器,使用Sqoop命令将Hive中的lenum表导入到Mysql的lenumsql中。
- sqoop export \
- --connect jdbc:mysql://localhost:3306/edu4out?characterEncoding=UTF-8 \
- --username root \
- --password strongs \
- --table lenumsql \
- --export-dir /user/hive/warehouse/edu4.db/lenum/000000_0 \
- --input-fields-terminated-by '\t';
查看mysql中lenumsql表,数据内容
- select * from lenumsql;
这样,我们就将Hive中的lenum表数据成功导入到Mysql中了。
5.在执行导数据之前,可以进行一个测试,验证Sqoop是否可用
查看Mysql中的数据库。通过此步验证,可以测试出Sqoop以及Mysql是否可以正常连接
- sqoop list-databases \
- --connect jdbc:mysql://localhost:3306/ \
- --username root \
- --password strongs;
-
结果列出了Mysql中的所有数据库,证明Sqoop可以与Mysql正常连接。
需求二,将Hive表中数据,导入到MySQL
将hive中多久进行评论数据统计结果导入到Mysql中的dayssql表中
1.在Hive中,创建用户评论周期分析结果表typenums,包含两个字段类型及数量
- create table typenums(
- leixing string,
- num int
- )
- row format delimited
- fields terminated by '\t'
- stored as textfile;
2.对用户评论间隔时间进行统计,并将统计结果导入到Hive中的typenums表中。
- insert into table
- select
- leixing,
- count(1) as num
- from govdata
- group by leixing
- order by num desc;
查看Hive表typenums中的数据
- select * from typenums;
3.在Mysql端口创建typenum表,用于存储typenums中的数据。typenum中同样包含两个字段类型及数量
- create table typenum(leixing varchar(10),num int);
4.使用Sqoop命令将Hive的typenums表导入到Mysql的typenum里。
- sqoop export \
- --connect jdbc:mysql://localhost:3306/edu4out?characterEncoding=UTF-8 \
- --username root \
- --password strongs \
- --table typenum \
- --export-dir /user/hive/warehouse/edu4.db/typenums/000000_0 \
- --input-fields-terminated-by '\t';
查看mysql中typenum表。
- select * from typenum;
需求三,将HDFS数据导入到MySQL
将HDFS存储有政府回答问题数量统计结果数据文件govnums导入到MySQL中govnum表中
1.在HDFS上创建目录/myedu4/in,并将/data/edu4下的govnums文件上传到HDFS中的in目录下。
- hadoop fs -mkdir -p /myedu4/in
- hadoop fs -put /data/edu4/govnums /myedu4/in
2.在MySQL中,创建表govnum。表中包含两个字段用户等级名及数量
- create table govnum (govname varchar(50),num int);
3.使用Sqoop命令将HDFS中/myedu4/in/govnums导入到MySQL的govnum中。
- sqoop export \
- --connect jdbc:mysql://localhost:3306/edu4out?characterEncoding=UTF-8 \
- --username root \
- --password strongs \
- --table govnum \
- --export-dir /myedu4/in/govnums \
- --input-fields-terminated-by '\t'
查看govnum中的数据
- select * from govnum;
浙公网安备 33010602011771号