大数据实战 --- 世界新冠疫情数据分析

这篇具有很好参考价值的文章主要介绍了大数据实战 --- 世界新冠疫情数据分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

开发环境 

数据描述

功能需求

数据准备

统计计算

Hbase

Hive

分析数据


开发环境 

Hadoop+Hive+Spark+HBase

启动Hadoop:start-all.sh

启动zookeeper:zkServer.sh start

启动Hive

nohup hiveserver2 1>/dev/null 2>&1 &

beeline -u jdbc:hive2://192.168.152.192:10000

启动Hbase

start-hbase.sh

hbase shell

启动Spark:spark-shell

数据描述

countrydata.csv 是世界新冠疫情数,数据中记录了从疫情开始至 7 2 日,以国家为单位的每日新冠疫情感染人数的数据统计。字段说明如下:

大数据实战 --- 世界新冠疫情数据分析

功能需求

数据准备

请在 HDFS 中创建目录/app/data/exam,并将 countrydata.csv 传到该目录。

hdfs dfs -mkdir -p /app/data/exam

hdfs dfs -put ./countrydata.csv /app/data/exam

统计计算

Spark-Shell 中,加载 HDFS 文件系统 countrydata.csv 文件,并使用 RDD 完成以下统计计算。

scala> val fileRdd = sc.textFile("/app/data/exam/countrydata.csv")
scala> val yqRdd = fileRdd.map(x=>x.split(","))

①统计每个国家在数据截止统计时的累计确诊人数。

方法一:

scala> yqRdd.map(x=>(x(4),x(1).toInt)).reduceByKey((v1,v2)=>math.max(v1,v2))
.foreach(println)

方法二:

scala>yqRdd.map(x=>(x(4),x(3),x(1).toInt)).groupBy(x=>x._1)
.mapValues(x=>x.toList.sortBy(it=>(0-it._2.toLong)).max)
.map(x=>(x._1,x._2._3)).foreach(println)

方法三: 

yqRdd.map(x=>(x(4),x(1).toInt)).reduceByKey((v1,v2)=>{if(v1>v2) v1 else  v2})
.foreach(println)

②统计全世界在数据截止统计时的总感染人数。

方法一:

scala> yqRdd.map(x=>(x(4),x(1).toInt)).reduceByKey((v1,v2)=>math
.max(v1,v2)).map(x=>("all world",x._2)).reduceByKey(_+_).foreach(println)

(all world,10785407)

方法二:

scala> yqRdd.map(x=>(x(4),x(1).toInt)).reduceByKey((v1,v2)=>math.max(v1,v2))
.reduce((x,y)=>("all world", x._2+y._2))

res16: (String, Int) = (all world,10785407)

③统计每个大洲中每日新增确诊人数最多的国家及确诊人数,并输出 20200408 这一天各大洲当日新增确诊人数最多的国家及确诊人数。

scala> yqRdd.map(x=>((x(6),x(3)),(x(1).toInt,x(2).toInt,x(4))))
.reduceByKey((x,y)=>if(x._2>y._2) x else y)
.filter(x=>x._1._2=="20200408").map(x=>(x._1._1,x._2._2,x._2._3,x._1._2))
.foreach(println)

④统计每个大洲中每日累计确诊人数最多的国家及确诊人数,并输出 20200607 这一天各大洲当日累计确诊人数最多的国家及确诊人数。

scala> yqRdd.map(x=>((x(6),x(3)),(x(1).toInt,x(2).toInt,x(4))))
.reduceByKey((x,y)=>if(x._1>y._1) x else y)
.filter(x=>x._1._2=="20200607").map(x=>(x._1._1,x._2._2,x._2._3,x._1._2))
.foreach(println)

⑤统计每个大洲每月累计确诊人数,显示 202006 这个月每个大洲的累计确诊人数。

scala> yqRdd.map(x=>((x(3).substring(0,6),x(6)),x(2).toInt)).reduceByKey(_+_)
.filter(x=>x._1._1=="202006").foreach(println)

Hbase

HBase 中创建命名空间(namespaceexam,在该命名空间下创建 covid19_world 表,使用大洲和统计日期的组合作为 RowKey(如“亚洲 20200520”),该表下有 1 个列族 recordrecord 列族用于统计疫情数据(每个大洲当日新增确诊人数最多的国家record:maxIncreaseCountry 及其新增确诊人数 record:maxIncreaseCount)

hbase(main):001:0> create 'exam:covid19_world','record'

Hive

请在 Hive 中创建数据库 exam,在该数据库中创建外部表 ex_exam_record 指向 /app/data/exam 下的疫情数据 ;创建外部表 ex_exam_covid19_record 映射至 HBase 中的 exam:covid19_world 表的 record 列族

大数据实战 --- 世界新冠疫情数据分析

ex_exam_record 表 

create external table ex_exam_record
(
    id               string,
    confirmedCount   int,
    confirmedIncr    int,
    recordDate       string,
    countryName      string,
    countryShortCode string,
    continent        string
)
    row format delimited fields terminated by ","
    stored as textfile location "/app/data/exam";

ex_exam_covid19_record 表 

create external table ex_exam_covid19_record
(
    key                string,
    maxIncreaseCountry string,
    maxIncreaseCount   int
) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    with serdeproperties ("hbase.columns.mapping" =
            ":key,record:maxIncreaseCountry,record:maxIncreaseCount")
    tblproperties ("hbase.table.name" = "exam:covid19_world");

分析数据

使用 ex_exam_record 表中的数据

①统计每个大洲中每日新增确诊人数最多的国家,将 continent recordDate 合并成 rowkey,并保存到 ex_exam_covid19_record 表中。

insert into ex_exam_covid19_record
select t.rowkey, t.countryName, t.confirmedIncr
from (select concat(continent, recordDate)                                             rowkey,
             countryName,
             confirmedIncr,
             row_number() over (partition by countryName order by confirmedIncr desc ) max
      from ex_exam_record
      group by concat(continent, recordDate), countryName, confirmedIncr) t
where t.max = 1;

②完成统计后,在 HBase Shell 中遍历 exam:covid19_world 表中的前 20 条数据。文章来源地址https://www.toymoban.com/news/detail-430807.html

scan 'exam:covid19_world',{limit=>20}

到了这里,关于大数据实战 --- 世界新冠疫情数据分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据实战 --- 淘宝用户行为数据分析

    目录 开发环境  数据描述 功能需求 数据准备 数据清洗 用户行为分析 找出有价值的用户 Hadoop+Hive+Spark+HBase 启动Hadoop :start-all.sh 启动zookeeper :zkServer.sh start 启动Hive : nohup hiveserver2 1/dev/null 21 beeline -u jdbc:hive2://192.168.152.192:10000 启动Hbase : start-hbase.sh hbase shell 启动Spark :s

    2023年04月22日
    浏览(46)
  • 大数据实战 --- 美团外卖平台数据分析

    目录 开发环境  数据描述 功能需求 数据准备 数据分析 RDD操作 Spark SQL操作 创建Hbase数据表 创建外部表 统计查询 Hadoop+Hive+Spark+HBase 启动Hadoop :start-all.sh 启动zookeeper :zkServer.sh start 启动Hive : nohup hiveserver2 1/dev/null 21 beeline -u jdbc:hive2://192.168.152.192:10000 启动Hbase : start-hbase

    2024年02月02日
    浏览(32)
  • 大数据实战(hadoop+spark+python):淘宝电商数据分析

    虚拟机:Ubuntu 20.04.6 LTS docker容器 hadoop-3.3.4 spark-3.3.2-bin-hadoop3 python,pyspark, pandas,matplotlib mysql,mysql-connector-j-8.0.32.jar(下载不需要积分什么的) 淘宝用户数据 以上的技术积累需要自行完成 创建容器(##ubuntu的代码块,在ubuntu中运行,无特殊说明的在docker中运行) 更新软件

    2024年02月11日
    浏览(55)
  • 大数据项目实战——基于某招聘网站进行数据采集及数据分析(二)

    第二章 搭建大数据集群环境 了解虚拟机的安装和克隆 熟悉虚拟机网络配置和 SSH 服务配置 掌握 Hadoop 集群的搭建 熟悉 Hive 的安装 掌握 Sqoop 的安装 搭建大数据集群环境是开发本项目的基础。本篇将通过在虚拟机中构建多个Linux操作系统的方式来搭建大数据集群环境。 Hadoop本

    2024年02月11日
    浏览(41)
  • 大数据项目实战——基于某招聘网站进行数据采集及数据分析(三)

    第三章 数据采集 掌握 HDFS API 的基本使用 熟悉 HttpClent 爬虫的使用方法 本篇主要对要采集的数据结构进行分析以及创建编写数据采集程序的环境,为最终编写数据采集程序做准备。 在爬取网站数据前要先通过分析网站的源码结构制定爬虫程序的编写方式,以便能获取准确的

    2024年02月11日
    浏览(37)
  • 大数据项目实战——基于某招聘网站进行数据采集及数据分析(一)

    掌握项目需求和目标 了解项目架构设计和技术选型 了解项目环境和相关开发工具 理解项目开发流程 在人力资源管理领域,网络招聘近年来早已凭借其范围广、信息量大、时效性强、流程简单而效果显著等优势,成为企业招聘的核心方式。随着大数据渐渐融入人类社会生活的

    2024年02月02日
    浏览(47)
  • Spark 大数据实战:基于 RDD 的大数据处理分析

    之前笔者参加了公司内部举办的一个 Big Data Workshop,接触了一些 Spark 的皮毛,后来在工作中陆陆续续又学习了一些 Spark 的实战知识。 本文笔者从小白的视角出发,给大家普及 Spark 的应用知识。 Spark 集群是基于 Apache Spark 的分布式计算环境,用于处理 大规模数据集 的计算任

    2024年01月25日
    浏览(35)
  • 毕设 疫情数据分析与3D可视化 - python 大数据

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月10日
    浏览(30)
  • 竞赛项目 疫情数据分析与3D可视化 - python 大数据

    🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据全国疫情数据分析与3D可视化 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:2分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/danch

    2024年02月13日
    浏览(22)
  • 竞赛保研 大数据疫情分析及可视化系统

    🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据疫情分析及可视化系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-seni

    2024年01月19日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包