当前位置: 首页 > news >正文

【hadoop】疫情离线分析案例

准备:

疫情数据集,mysql,hive,sqoop,davinci,hadoop集群环境

阶段1:数据准备

​1. MySQL源表

mysql

CREATE DATABASE covid19 DEFAULT CHARSET 'utf8mb4'CREATE TABLE `covid_source` (`id` INT NOT NULL AUTO_INCREMENT,`province` VARCHAR(20),`date` DATE,`confirmed` INT,`deaths` INT,`recovered` INT,PRIMARY KEY (`id`)
);-- 插入数据语句(可以使用Python,也可以sql)
INSERT INTO `covid_source` 
(province, date, confirmed, deaths, recovered) VALUES
('湖北','2023-01-01', 54306, 1320, 32415),
('广东','2023-01-01', 1523, 8, 1240),
...

(你也可以使用LOAD DATA命令,直接将数据集导入到Hive中) 

阶段2Hive数仓构建

​1. Sqoop导入Hive(关键命令)

bash
sqoop import \
--connect jdbc:mysql://master:3306/covid19 \
--username root \
--password 123456 \
--table covid_source \
--hive-import \
--hive-table ods_covid_source \
--create-hive-table \
--fields-terminated-by '\001'

2. Hive分层建模

hivesql
-- ODS层(原始数据)(Sqoop导入时自动创建)
CREATE TABLE ods_covid_source (province STRING,`date` DATE,confirmed INT,deaths INT,recovered INT
) STORED AS TEXTFILE;-- DWD层(清洗后)
CREATE TABLE dwd_covid_stats AS
SELECT province,`date`,confirmed,deaths,recovered,(confirmed - deaths - recovered) AS current_confirmed 
FROM ods_covid_source 
WHERE `date` IS NOT NULL;

阶段3:分析指标计算

​1. 核心分析SQL示例

hivesql
-- 各省累计确诊--DWS层
CREATE TABLE dws_province_top AS
SELECT province,MAX(confirmed) AS total_confirmed				
FROM dwd_covid_stats
GROUP BY province
ORDER BY total_confirmed DESC;-- 全国每日新增趋势--DWS层
CREATE TABLE dws_daily_growth AS
SELECT `date`,
CASE
WHEN `date` = MIN(`date`) OVER() THEN 0
ELSE SUM(confirmed) - LAG(SUM(confirmed),1) OVER(ORDER BY `date`) 
END AS new_confirmed
FROM dwd_covid_stats
GROUP BY `date`;

 

阶段4Sqoop导出到MySQL​

​1. MySQL结果表设计

mysql
CREATE TABLE `ads_province_top` (`province` VARCHAR(20) PRIMARY KEY,`total_confirmed` INT
);CREATE TABLE `ads_daily_growth` (`date` DATE PRIMARY KEY,`new_confirmed` INT
);

2. Sqoop导出命令

bash
# 导出省份TOP10数据
sqoop export \
--connect "jdbc:mysql://master:3306/covid19?useUnicode=true&characterEncoding=utf8" \
--username root \
--password 123456 \
--table ads_province_top \
--export-dir /user/hive/warehouse/dws_province_top \
--input-fields-terminated-by '\001'# 导出每日趋势数据(增量导出示例)
sqoop export \
--connect "jdbc:mysql://master:3306/covid19?useUnicode=true&characterEncoding=utf8" \
--username root \
--password 123456 \
--table ads_daily_growth \
--export-dir /user/hive/warehouse/dws_daily_growth \
--input-fields-terminated-by '\001'

阶段5Davinci可视化配置

​1. 数据源连接

  • Davinci中添加MySQL数据源:

类型: MySQL
URL: jdbc:mysql://master:3306/covid19
用户名/密码: root 123456

2. 可视化看板设计

  • 组件1:疫情地图
    • 数据模型:SELECT province, total_confirmed FROM ads_province_top
    • 图表类型:中国地图
    • 映射字段:province -> 区域total_confirmed -> 颜色深浅
  • 组件2:趋势折线图
    • 数据模型:SELECT date, new_confirmed FROM ads_daily_growth
    • 图表类型:折线图
    • X轴:date, Y轴:new_confirmed

效果图

相关文章:

  • 山东大学 2025 web数据管理期末复习总结
  • 使用文件的基本操作和文件内容读写操作实现三个功能
  • 玛哈特零件矫平机:精密制造中的平整度守护者
  • 【11408学习记录】考研数学核心突破:矩阵本质、系统信息与向量空间基
  • Flutter 小技巧之:实现 iOS 26 的 “液态玻璃”
  • LLaMA Factory 微调教程:如何构建高质量数据集?
  • 低代码二次开发指南:基于HENGSHI SENSE的自动化报表生成教程
  • 【Docker基础】Docker核心概念:容器(Container)与镜像(Image)的区别与联系
  • (二十六)深度解析领域特定语言(DSL)第四章——词法分析:基于正则表达式的词法分析器
  • 【从零学习JVM|第七篇】快速了解直接内存
  • 用volatile修饰数组代表什么意思,Java
  • # Flask:Python的轻量级Web框架入门之旅(超级实用!)
  • 动态多目标进化算法:MOEA/D-SVR求解CEC2018(DF1-DF14),提供完整MATLAB代码
  • mvc与mvp
  • pysnmp 操作流程和模块交互关系的可视化总结
  • Genio 1200 Evaluation MT8395平台安装ubuntu
  • ​​​​​​​《TCP/IP协议卷1》第9章 IP选路
  • Gemini 2.5 Pro 和Claude 3.7 理综物理真题,考研数学真题实战对比,国内直接使用
  • 腾讯云:6月30日起,自动禁用,及时排查
  • Odoo 基于规则的线索自动分配实践指南
  • 淘宝客做网站推广赚钱吗/网店代运营哪个好
  • 科技企业网站模板/seo公司广州
  • 网站模糊背景/新闻发布稿
  • 建盏公司最新消息/杭州seo靠谱
  • 高德为什么没有国外地图/关键词优化的五个步骤
  • 总公司网站备案后 分公司网站还需要备案吗/长春seo公司