统计govdata中,统计每年的信件数量,并将结果导到mysql中。

1.首先在Hive中,创建一张表,命名为lenum,用于存储统计结果。

  1. create table lenum(  
  2.   year string,  
  3.   num int  
  4. )  
  5. row format delimited  
  6. fields terminated by '\t'  
  7. stored as textfile;  

lenum表,有两个字段:设备类型及设备数量

在Hive中,统计每年信件数量,并将结果临时存储在hive中的lenum表中。

  1. insert into table lenum  
  2. select  
  3.  substr(shijian,0,4) as dt,  
  4.  count(1) as num  
  5. from govdata  
  6. group by substr(shijian,0,4)  
  7. order by num;  

查看lenum表。

  1. select * from lenum;  

3.新打开一个命令行终端,连接Mysql(密码:strongs)

  1. mysql -u root -p  

在mysql中,创建名为edu4out的数据库,用于存储导过来的数据

  1. CREATE DATABASE IF NOT EXISTS edu4out DEFAULT CHARSET utf8 COLLATE utf8_general_ci;  
  2. use edu4out  

在Mysql中创建名为lenumsql的表,用于储蓄Hive中lenum表的数据。此表也包含两个字段时间及数量

  1. create table lenumsql (time varchar(10),num int);  

4.再新开启一个终端模拟器,使用Sqoop命令将Hive中的lenum表导入到Mysql的lenumsql中。

  1. sqoop export \  
  2. --connect jdbc:mysql://localhost:3306/edu4out?characterEncoding=UTF-8 \  
  3. --username root \  
  4. --password strongs \  
  5. --table lenumsql \  
  6. --export-dir /user/hive/warehouse/edu4.db/lenum/000000_0 \  
  7. --input-fields-terminated-by '\t';  

查看mysql中lenumsql表,数据内容

  1. select * from lenumsql;  

这样,我们就将Hive中的lenum表数据成功导入到Mysql中了。

5.在执行导数据之前,可以进行一个测试,验证Sqoop是否可用

查看Mysql中的数据库。通过此步验证,可以测试出Sqoop以及Mysql是否可以正常连接

  1. sqoop list-databases \  
  2. --connect jdbc:mysql://localhost:3306/ \  
  3. --username root \  
  4. --password strongs;  
  5. 结果列出了Mysql中的所有数据库,证明Sqoop可以与Mysql正常连接。

    需求二,将Hive表中数据,导入到MySQL

    将hive中多久进行评论数据统计结果导入到Mysql中的dayssql表中

    1.在Hive中,创建用户评论周期分析结果表typenums,包含两个字段类型及数量

    1. create table typenums(  
    2.   leixing string,  
    3.   num int  
    4. )  
    5. row format delimited  
    6. fields terminated by '\t'  
    7. stored as textfile;  

    2.对用户评论间隔时间进行统计,并将统计结果导入到Hive中的typenums表中。

    1. insert into table  
    2. select  
    3.  leixing,  
    4.  count(1) as num  
    5. from govdata  
    6. group by leixing  
    7. order by num desc;  

    查看Hive表typenums中的数据

    1. select * from typenums;  

    3.在Mysql端口创建typenum表,用于存储typenums中的数据。typenum中同样包含两个字段类型及数量

    1. create table typenum(leixing varchar(10),num int);  

    4.使用Sqoop命令将Hive的typenums表导入到Mysql的typenum里。

    1. sqoop export \  
    2. --connect jdbc:mysql://localhost:3306/edu4out?characterEncoding=UTF-8 \  
    3. --username root \  
    4. --password strongs \  
    5. --table typenum \  
    6. --export-dir /user/hive/warehouse/edu4.db/typenums/000000_0 \  
    7. --input-fields-terminated-by '\t';  

    查看mysql中typenum表。

    1. select * from typenum;  

    需求三,将HDFS数据导入到MySQL

    将HDFS存储有政府回答问题数量统计结果数据文件govnums导入到MySQL中govnum表中

    1.在HDFS上创建目录/myedu4/in,并将/data/edu4下的govnums文件上传到HDFS中的in目录下。

    1. hadoop fs -mkdir -p /myedu4/in  
    2. hadoop fs -put /data/edu4/govnums /myedu4/in  

    2.在MySQL中,创建表govnum。表中包含两个字段用户等级名及数量

    1. create table govnum (govname varchar(50),num int);  

    3.使用Sqoop命令将HDFS中/myedu4/in/govnums导入到MySQL的govnum中。

    1. sqoop export \  
    2. --connect jdbc:mysql://localhost:3306/edu4out?characterEncoding=UTF-8 \  
    3. --username root \  
    4. --password strongs \  
    5. --table govnum \  
    6. --export-dir /myedu4/in/govnums \  
    7. --input-fields-terminated-by '\t'  

    查看govnum中的数据

    1. select * from govnum;  
posted on 2025-03-26 09:56  leapss  阅读(8)  评论(0)    收藏  举报