目标

将MySQL的数据拿到Hive进行分析统计,将统计结果返回到MySQL。

分析:
1) 在hive中创建一个emp_etl对应的表
2) 使用sqoop将mysql中的emp_etl表导入到hive表中
3) 在hive中进行统计分析(每个部门多少人),然后结果写入到hive结果表中
4) 将hive结果表通过sqoop导出到mysql表中
5)shell封装整个过程,通过调度工具定时调度

一、MySQL原始数据

mysql> select * from emp_etl;
+-------+--------+-----------+------+------------+-------+------+--------+
| empno | ename  | job       | mgr  | hiredate   | sal   | comm | deptno |
+-------+--------+-----------+------+------------+-------+------+--------+
|  7369 | SMITH  | CLERK     | 7902 | 1980-12-17 |   800 | NULL |     20 |
|  7499 | ALLEN  | SALESMAN  | 7698 | 1981-2-20  |  1600 |  300 |     30 |
|  7521 | WARD   | SALESMAN  | 7698 | 1981-2-22  |  1250 |  500 |     30 |
|  7566 | JONES  | MANAGER   | 7839 | 1981-4-2   |  2975 | NULL |     20 |
|  7654 | MARTIN | SALESMAN  | 7698 | 1981-9-28  |  1250 | 1400 |     30 |
|  7698 | BLAKE  | MANAGER   | 7839 | 1981-5-1   |  2850 | NULL |     30 |
|  7782 | CLARK  | MANAGER   | 7839 | 1981-6-9   |  2450 | NULL |     10 |
|  7788 | SCOTT  | ANALYST   | 7566 | 1987-4-19  |  3000 | NULL |     20 |
|  7839 | KING   | PRESIDENT | NULL | 1981-11-17 |  5000 | NULL |     10 |
|  7844 | TURNER | SALESMAN  | 7698 | 1981-9-8   |  1500 |    0 |     30 |
|  7876 | ADAMS  | CLERK     | 7788 | 1987-5-23  |  1100 | NULL |     20 |
|  7900 | JAMES  | CLERK     | 7698 | 1981-12-3  |   950 | NULL |     30 |
|  7902 | FORD   | ANALYST   | 7566 | 1981-12-3  |  3000 | NULL |     20 |
|  7934 | MILLER | CLERK     | 7782 | 1982-1-23  |  1300 | NULL |     10 |
|  8888 | HIVE   | PROGRAM   | 7839 | 1988-1-23  | 10300 | NULL |   10 |
+-------+--------+-----------+------+------------+-------+------+--------+

二、Hive中创建对应的表并导入数据
1、创建表

hive (default)> create table emp_analy(empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int)row format delimited fields terminated by '\t';

2、数据导入到Hiv 的emp_analy表

sqoop import \
--connect jdbc:mysql://hadoop001:3306/sqoop \
--username root \
--password 123456 \
--table emp_etl \
-m 1 \
--hive-import \
--hive-table  emp_analy \
--fields-terminated-by '\t' 

三、分析统计需要的结果(每个部门总人数)
1、创建存储统计结果的表

hive (default)> create table emp_result(deptno int ,nums int) row format delimited fields terminated by '\t';

2、统计结果数据插入到emp_result表

hive (default)> insert overwrite table emp_result select deptno,count(*) as nums from emp_analy group by deptno;

四、结果数据导出到MySQL中
1、MySQL中创建接收结果数据的表

mysql> create table emp_result_end(deptno int ,nums int);

2、从Hive将结果数据导出到MySQL

sqoop export \
--connect jdbc:mysql://hadoop001:3306/sqoop \
--username root \
--password 123456 \
--table emp_result_end \
--export-dir /user/hive/warehouse/emp_result \
-m 1 \
--verbose \
--fields-terminated-by '\t' 

3、MySQL中查看统计结果

mysql> select * from emp_result_end;
+--------+------+
| deptno | nums |
+--------+------+
|     10 |    4 |
|     20 |    5 |
|     30 |    6 |
+--------+------+
3 rows in set (0.00 sec)

五、shell封装
1、自动创建Hive表
vi auto_create_hive_table.sh

#! /bin/bash
hive -e "
use default;
create table if not exists emp_analy (
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
)row format delimited fields terminated by '\t';"

2、原始数据到Hive表
vi import_data_hive.sh

#! /bin/bash
sqoop import \
--connect jdbc:mysql://hadoop001:3306/sqoop \
--username root \
--password 123456 \
--table emp_etl \
-m 1 \
--hive-import \
--hive-table  emp_analy \
--fields-terminated-by '\t'

3、Hive创建结果表
vi hive_create_result_table.sh

#!/bin/bash
hive -e "
use default;
create table emp_result(
deptno int ,
nums int) row format delimited fields terminated by '\t';
"

4、统计结果插入到Hive结果表
vi insert_data_emp_result.sh

#! /bin/bash
hive -e "
use default;
insert overwrite table emp_result
select deptno,count(*) as nums from emp_analy group by deptno;
"

5、MySQL创建接收统计数据的表
vi auto_create_mysql_table.sh

#!/bin/bash
mysql -uroot  -p123456 sqoop -e "
create table if not exists emp_result_end(deptno int ,nums int);
truncate table emp_result_end;
"

5、统计数据导出到MySQL
vi export_data_mysql.sh

sqoop export \
--connect jdbc:mysql://hadoop001:3306/sqoop \
--username root \
--password 123456 \
--table emp_result_end \
--export-dir /user/hive/warehouse/emp_result \
-m 1 \
--verbose \
--fields-terminated-by '\t' 

6、创建日志文件

touch etl.log

7、所有脚本封装到一个脚本中统一运行
vi etl.sh

#! /bin/bash
echo 'start -----------------' >>/opt/etl/etl.log
echo `date +%Y/%m/%d-%H:%M:%H` >>/opt/etl/etl.log
sh /opt/etl/auto_create_hive_table.sh
sh /opt/etl/import_data_hive.sh
sh /opt/etl/hive_create_result_table.sh
sh /opt/etl/insert_data_emp_result.sh
sh /opt/etl/auto_create_mysql_table.sh
sh /opt/etl/export_data_mysql.sh
echo 'end ==================' >>/opt/etl/etl.log
echo `date +%Y/%m/%d-%H:%M:%H`>>/opt/etl/etl.log

只需要执行etl.sh脚本统计结果就会导出到MySQL了,由于脚本设置不严谨,所以执行脚本前需删除已存在的表。当脚本完善后可以通过调度器进行调度。

MySQL(Data)-Hive (AnalyzeStatistics)-MySQL相关推荐

  1. wpf 执行mysql命令_WPF(.net 3.5)使用MySql.Data.dll进行mysql数据库操作

    开发环境 win764 vs2015 wpf+.net3.5 下载 MySql.Data.dll 引用到项目中 看好版本 另一个版本 为什么放两个版本呢 因为写这篇文章的时候用的是5.2.3的版本,但 ...

  2. mysql.data webconfig_配置mysql的前端工具phpMyadmin

    当前出现很多 GUI MySQL客户程序,其中最为出色的是基于 Web 的 phpMyAdmin 工具.这是一种基于PHP的 MySQL 数据库前台的管理工具. phpMyAdmin 是一个用PHP编 ...

  3. 小知识点:ARM 架构 Linux 大数据集群基础环境搭建(Hadoop、MySQL、Hive、Spark、Flink、ZK、Kafka、Nginx、Node)

      换了 M2 芯片的 Mac,以前 x86 版本的 Linux 大数据集群基础环境搭建在 ARM 架构的虚拟机集群上有些用不了了,现在重新写一份基于 ARM 架构的,少数不兼容之外其他都差不多,相当 ...

  4. 【B】替换 Quartz.net 默认使用的 MySql.Data 为 Mysqlconnector 的学习过程

    文章转载授权级别:B 无论是 Quartz.net 还是 MySql.Data 都是我们比较熟悉的库了,Quartz.net 如果配置为使用 MySql 数据库做持久化时,默认是硬编码了使用 MySq ...

  5. 错误175:具有固定名称MySql.Data.MySqlClient的ADO.NET提供程序未在计算机或者应用程序配置文件中注册或者无法加载

    背景: EF连接MySQL时报错,截图如下图所示: 网上翻阅了很多资料,感觉有一篇文章说的比较靠谱:点击阅读.解决问题的大致过程如下: 在尝试使用MySQL,ADO.NET(数据库优先)和EF6配置时 ...

  6. mysql c 驱动dll_C#调用MySQL数据库(使用MySql.Data.dll连接)mysql-connector-net-6.10.4.msi

    下载地址:http://dev.mysql.com/downloads/connector/net/ 安装指导 1.安装:mysql-connector-net-6.10.4.msi 其下载地址:ht ...

  7. MySQL常见错误:Starting MySQL...The server quit without updating PID file (/usr/local/mysql/data/localhos

    常见错误1:Starting MySQL-The server quit without updating PID file (/usr/local/mysql/data/localhost.loca ...

  8. mysql data dll_mysql.data.dll官方下载

    mysql.data.dll是MySQL数据库中一款必备的驱动文件,主要用于.net编程和MySQL数据库的连接,包含不同版本的mysql.data.dll,支持32位和64位系统,需要的朋友可以根据 ...

  9. linux mysql 升级_linux升级mysql

    下载二进制安装包,地址 //downloads.mariadb.org/mariadb/10.2.5/ # cd /usr/local/ # wget //mirrors.neusoft.edu.cn ...

最新文章

  1. LeetCode题组:第26题-删除排序数组中的重复项
  2. Tomcat配置及原理文章
  3. 合理支配“财富”:经理人运用时间的12种典型模式
  4. 荣耀智慧屏功能曝光 首发华为鸿蒙OS,荣耀智慧屏功能曝光:首发华为鸿蒙OS,全场景智慧体验...
  5. Anaconda配置和使用
  6. ubuntu下如何设置apache的启动和重启
  7. phpcmsV9重装 - 踩坑篇
  8. strnpy函数的用法
  9. 数据:42家公司持有超135万枚BTC 价值逾650亿美元
  10. React Native图片缓存解决方案
  11. AppScan报错--发生内部错误
  12. while循环python次数定义_Python学习笔记之While循环用法分析
  13. version magic 不一致问题
  14. HTML5期末大作业:关于家乡介绍主题网页设计——云南民族文化(8页) HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品
  15. 边缘和核心交换——应用层CS、P2P、混合模式
  16. 速腾聚创 RoboSense RS-Helios 32线激光雷达使用 LeGO-LOAM 算法建图
  17. 基于支付宝微信通知的一种个人收款回调方案
  18. Memcached分布式算法
  19. PowerBI-时间智能函数-DATEADD
  20. Android各版本分布

热门文章

  1. 迈普2800路由器设置trunk
  2. 用Python写了个金融数据爬虫,半小时干了全组一周的工作量
  3. Linux目录文件的权限,默认权限,隐藏权限
  4. FMSoft uniGUI Professional 1.90.0.1564 Crack
  5. 新手开店感想接口,使用一件铺货如何优化标题,如何优化商品主图?
  6. 南大通用GBase8s 常用SQL语句(290)
  7. android 未读短信app,Android APP桌面启动图标未读信息小红点实现——在巨人的肩膀上淌坑...
  8. HNU-电路与电子学-实验3
  9. 重新建立博客的一段话
  10. C语言大型连续剧(第五集)——哎呦,操作符