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

目录

开发环境 

数据描述

功能需求

数据准备

统计计算

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 ) maxfrom ex_exam_recordgroup by concat(continent, recordDate), countryName, confirmedIncr) t
where t.max = 1;

②完成统计后,在 HBase Shell 中遍历 exam:covid19_world 表中的前 20 条数据。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18720.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】2020年美国新冠肺炎疫情数据分析

2020年美国新冠肺炎疫情数据分析 一、 需求描述二、 环境介绍三、 数据来源描述四、 数据上传及上传结果查看五、数据处理过程描述1、数据集下载2、格式转换3、启动Hadoop集群4、将文件上传至HDFS文件系统中5、使用Spark对数据进行分析6、读取文件生成DataFrame8、数据可视化 六…

数据分享|函数型数据分析部分省市新冠疫情数据

作者:Mingji Tang 统计学中传统的数据类型有截面数据和时间序列数据。这两者都只能在某一纵向或横向上探究数据,且部分前提条件又很难满足。而函数型数据连续型函数与离散型函数长期以来的分离状态,实现了离散和连续的过度。它很少依赖于模型…

利用Python爬取新冠肺炎疫情实时数据,Pyecharts画2019-nCoV疫情地图

前言 博客是2年前写的,中间有好多网友私信我获取源码及指出部分bug,感谢支持! 取不到数据的原因是数据接口发生较大变化,最近刚好有时间,所以重新整理了一下。 第一部分 网页分析 数据源 腾讯疫情实时追踪 今天重新整…

新冠肺炎国内外疫情数据爬取

环境说明 爬虫环境: Python3 IDE:Pycharm 爬虫工具包: requests BeautifulSoup json 从腾讯新闻网爬取 使用chrome浏览器对腾讯新闻网进行页面元素审查,进入network,刷新,查看response: 寻找到这三个js文…

[Pyhon疫情大数据分析] 四.微博话题抓取及新冠肺炎疫情文本挖掘和情感分析

思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫、可视化分析、GIS地图显示、情感分析、舆情分析、主题挖掘、威胁情报溯源、知识图谱、预测预警及AI和NLP应用等。希望该系列线上远程教学对您有所帮助,也希望早点战胜病毒,武汉…

爬取WHO各国病例数据

还在为拿不到官方病例数据而发愁吗? WHO各国病例数据如下: https://experience.arcgis.com/experience/685d0ace521648f8a5beeeee1b9125cd 我们的目的就是爬出这个图中的数据: 审查元素 首先我们随便点开一个国家的疫情情况:…

Python数据分析高薪实战第十天 EDA实战-全球新冠肺炎确诊病例趋势分析

27 初识 EDA:全球新冠肺炎确诊病例趋势分析 从本讲开始,我们会通过四个具体的案例来将我们之前学习的 Python 数据分析方面的知识全都串起来。一方面能够融会贯通,另一方面也能帮你掌握数据分析基本的方法论。 本讲我们首先会介绍数据分析中…

【大数据基础】2020年美国新冠肺炎疫情数据分析

https://dblab.xmu.edu.cn/blog/2738 https://dblab.xmu.edu.cn/blog/2636/ spark 安装 安装 Spark2.4.0 sudo tar -zxf ~/下载/spark-2.4.0-bin-without-hadoop.tgz -C /usr/local/ cd /usr/local sudo mv ./spark-2.4.0-bin-without-hadoop/ ./spark sudo chown -R hadoop:…

新冠疫情分析(疫情数据爬取+数据分析+网页排版展示)

新冠疫情来临,我简单的做一次疫情的数据分析温习我的python知识,也希望能帮到各位。分析中我用到的技术有:pyton爬取数据htmlcss将分析结果排版。用到的工具有exceltableau进行数据处理分析和绘图。数据分析中还是存在很多的不足,…

基于Python语言的Spark数据处理分析——2020年美国新冠肺炎疫情数据分析

基于Python语言的Spark数据处理分析——2020年美国新冠肺炎疫情数据分析 一、实验环境二、数据集1.数据集下载来源2.转换文件格式3.上传文件至HDFS文件系统 三、使用Spark进行数据分析1.读取文件并生成DataFrame2.采用python编程语言进行数据分析3.将HDFS上结果文件保存到本地文…

Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇

今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql进行数据分析制作疫情报告使用itchat给亲人朋友发送分析报告(本文)基于Django做数据屏幕使用Tableau做数据分析 来看看最终效果 目前已经完成&#xff…

python 爬取国内各省份新冠疫情历史数据(来自腾迅疫情)

数据接口: https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?adCode310000其中,adCode 是地区地理编码,可参考:python 全国行政地区信息爬取-腾迅位置服务平台请求方式: GET返回数据类型: J…

Python采集全球疫情数据并做可视化分析

嗨嗨,大家好~ 今天真的是刚睡醒就知道RNG八人确诊,这年头出国打个比赛都这么不容易,希望早日康复~ 唉,今天就教你们 如何用Python采集全球疫情数据,并做可视化分析 知识点: 爬虫基本流程requests 发送请求re 正则表…

【大数据平台】基于Spark的美国新冠肺炎疫情数据分析及预测

一、选题背景 新型冠状病毒疫情是由严重急性呼吸系统综合征冠状病毒2(SARS-CoV-2)导致的2019冠状病毒病(COVID-19)所引发的全球大流行疫情。该疾病在2019年末于中华人民共和国湖北省武汉市首次爆发,随后在2020年初迅速…

chatgpt画思维导图

场景: chatgpt写思维导图代码,进而在专门的软件中生成思维导图 方法 在提问中,输入需要的思维导图代码格式

ChatGPT与网络安全的跨时代对话

前言 ChatGPT:是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。G…

ChatGPT实现数据结构转换

数据结构转换 在应用系统开发和维护中,经常会有配置数据或客户数据需要在不同的序列化结构中相互转换的需求。不同编程语言之前,对数据结构的偏好也不一样,比如 JavaScript 一般使用 JSON、Java 一般使用 XML、Ruby 一般使用 YAML、Golang 一…

springboot3 笔记(雷峰阳)

文章目录 springboot3核心特性SpringBoot3-快速入门环境要求SpringBoot是什么快速体验1. 开发流程1. 创建项目2. 导入场景3.主程序4. 业务5. 测试6. 打包 2. 特性小结1. 简化整合2. 简化开发3. 简化配置5. 简化运维 3. Spring Initializr 创建向导3、应用分析1. 依赖管理机制2.…

我靠海外抖音搬运视频赚到了人生第一桶金:这个风口行业,真的很赚钱

在2022年新一轮疫情期间,“有啥方法,可在家快速赚钱?”冲上了热门话题。 “好想挣钱啊...…”单位难开工,生意不开张,咱们才惊醒:“领死工资的生活,真的好脆弱。” 平时总说副业赚钱&#xff0c…

腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据...

2019独角兽企业重金招聘Python工程师标准>>> 腾讯股票接口: 分时图 http://data.gtimg.cn/flashdata/hushen/minute/sz000001.js?maxage110&0.28163905744440854 五天分时图 http://data.gtimg.cn/flashdata/hushen/4day/sz/sz000002.js?maxage432…