目标:

  1. 对美国的疫情数据的爬取
  2. 将数据存入hive
  3. 利用spark对hive中的数据进行分析,提取疫情前十的洲
  4. 将分析结果可视化

一.对美国的疫情数据的爬取

这里利用新浪网的数据,网页链接是http://t.cn/A67OCJyZ
首先创造一个data.txt文件用来存储获取的数据

touch data.txt

获取数据的代码是

import requests
def getData(url):#设置代理headers={"user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/63.0.3239.132 Safari/537.36"}r=requests.get(url,headers=headers)try:r.encoding=r.apparent_encodingresult=r.textexcept:print("error")return resulturl='https://gwpre.sina.cn/interface/news/wap/ncp_foreign.d.json?citycode=SCUS0001&_=1591359081788&callback=jsoncallback'
data=getData(url)
file1 = open('data.txt','w',encoding='utf-8')
file1.write(data)
file1.close()

获取的数据进行部分展示

这这获取的数据都是字符串形式,我们需要给这种数据修改一下格式
这里用到了json模块
代码如下

import json
file=open('data.txt','r')
content=file.read()
data_dict=json.loads(content)
d=data_dict['data']
city_data=d['city']
file3=open('city_data.txt','w')
for item in city_data:List=item.values()for v in List:file3.write(str(v)+' ')file3.write('\n')

运行截图如下

以上数据为6月17日之前
这样我们就将数据收集完成了

二.将数据存入hive

1.启动Hadoop在sbin文件下输入命令./start-all.sh
2.启动Metastorehive --service metastore &
3.启动hivehive
4.创建数据库terminalcreate database terminal;
5.创建city_data表
create table city_data (name string,mapname string,connum int,susnum int,curenum int,deathnum int,conadd int,susadd int,cureadd int,deathadd int,is_show_entrance int,is_show_map int) row format delimited fields terminated by ' ';
6.将数据导入

load data local inpath '/home/tommy/modules/city_data.txt' into table city_data;

这样我们就将数据导入进了
部分命令与数据展示如下

三.利用spark对hive中的数据进行分析,提取疫情前十的洲

1.启动sparkspark-shell
2.创建一个连接hive的SparkSession对象
import org.apache.spark.sql.SparkSession
val spark=SparkSession.builder.enableHiveSupport().master("tommy:9083").getOrCreate
3.统计terminal数据库中city_data表中疫情最严重的前10个州,疫情的严重程度以现存确诊人数的多少来决定val df=spark.sql("select name,conNum from terminal.city_data order by conNum desc limit 10")
结果如下

经过分析发现,加州的确诊人数最多,看来加州的人民比较热情开放啊
使用spark容易内存不足,在执行命令的时候容易自己把自己杀死,如果虚拟机的内存是2GB的话建议改成4GB
4.现在将统计结果导入进MySQL
4.1进入MySQL创建数据库,并建表create database terminal character set utf8 collate utf8_general_ci;
create table city_data (name varchar(20),connum int);
4.2将数据输入到MySQL中df.write.mode("overwrite").format("jdbc").option("url","jdbc:mysql://tommy:3306/terminal").option("dbtable","city_data").option("user","debian-sys-maint").option("password","YjuKD5hqry7MGOAs").save()
如果不知道自己MySQL的user名和password的话可以在/etc/mysql中的debian.cnf文件中查询

四.将分析结果可视化

我们会利用Python将数据进行可视化,这里我们会用到三个个模块plotly,pymysql,pandas没有安装的可以使用一下代码pip insall plotly
pip insall pymysql
pip insall pandas
代码如下

# -*- coding: utf-8 -*-import pandas as pd
import pymysql
import plotly.graph_objs as go## 加上字符集参数,防止中文乱码
dbconn=pymysql.connect(host="localhost",database="terminal",user="debian-sys-maint",password="YjukD5hqry7MGOAs",port=3306,charset='utf8')#sql语句
sqlcmd="select * from city_data"#利用pandas 模块导入mysql数据
a=pd.read_sql(sqlcmd,dbconn)
#取前10行数据
b=a.head(10)
#print(b)bar = go.Bar(x=b['name'],y=b['conNum'],textposition = 'outside')
fig = go.Figure(bar)
fig.show()

显示结果如下


大数据导论期末大作业相关推荐

  1. 大数据导论三——大数据技术

    大数据技术层面及其功能 数据采集和预处理(功能) 利用ETL工具将分布的数据,抽取到临时中间层后进行处理,最后加载到数据仓库中,成为联机分析处理.数据挖掘的基础: 利用日志采集工具把实时采集的数据作为 ...

  2. 《大数据导论》——1.4节案例学习背景

    本节书摘来自华章社区<大数据导论>一书中的第1章,第1.4节案例学习背景,作者瓦吉德·哈塔克(Wajid Khattak),保罗·布勒(Paul Buhler),更多章节内容可以访问云栖社 ...

  3. 《大数据导论》一第1章 理解大数据

    本节书摘来自华章出版社<大数据导论>一书中的第1章,第1.1节,作者托马斯·埃尔(Thomas Erl),瓦吉德·哈塔克(Wajid Khattak),保罗·布勒(Paul Buhler) ...

  4. 《大数据导论》——2.3节业务流程管理

    本节书摘来自华章社区<大数据导论>一书中的第2章,第2.3节业务流程管理,作者瓦吉德·哈塔克(Wajid Khattak),保罗·布勒(Paul Buhler),更多章节内容可以访问云栖社 ...

  5. 《大数据导论》一1.4 案例学习背景

    本节书摘来自华章出版社<大数据导论>一书中的第1章,第1.4节,作者托马斯·埃尔(Thomas Erl),瓦吉德·哈塔克(Wajid Khattak),保罗·布勒(Paul Buhler) ...

  6. 《大数据分析》期末大作业报告

    浙江万里学院物流与电子商务学院(2019-2020学年第二学期) <大数据分析>期末大作业报告学生(学号):班级:<大数据分析>期末大作业报告目录第一章 数据处理第- 文件:n ...

  7. python智慧树期末_智慧树大数据python期末答案

    智慧树大数据python期末答案 中国加入wto后亚洲经济重心迅速向日本向中国转移掀起了本轮经济全球化的库兹涅佐夫号航母着舰区是航母斜角甲板,斜角甲板上面有好的戏剧语言不仅能够推动什么发展同时还能揭示 ...

  8. 大数据Hadoop教程-学习笔记01【大数据导论与Linux基础】

    视频教程:哔哩哔哩网站:黑马大数据Hadoop入门视频教程,总时长:14:22:04 教程资源:https://pan.baidu.com/s/1WYgyI3KgbzKzFD639lA-_g,提取码: ...

  9. 大数据基础-大数据导论

    概述 信息是数据的有序排列而成,数据是构成信息的基本单位 数据的类型:文本 图片 音频 视频 数据组织形式:文件 数据库 常见数据库(层次数据库,网状数据库,关系数据库[主流].NoSQL数据库[非结 ...

最新文章

  1. C++CTime使用方法
  2. usb转rj45_笔记本接口不够怎么办?先看USB-A接口能转谁
  3. Sorm进阶(1):storm实现github提交数监控看板
  4. 辛巴巴巴鲁比啦音乐计算机版,辛巴巴巴鲁给啦是什么歌 辛巴巴巴鲁比啦歌曲介绍...
  5. http://www.tldp.org/LDP/abs/abs-guide.txt.gz
  6. Java中的继承与组合
  7. 香甜的黄油(信息学奥赛一本通-T1345)
  8. 2.图像作为函数 | 标量、函数、混合图像_6
  9. Element UI的表格table列的宽度自适应设置
  10. java jax ws_Java 7是否包含JAX-WS实现或API?
  11. [Android] 微信apk.1安装器,200k可隐藏 解决微信传apk自动改名apk.1f无法安装问题
  12. SSL / TLS协议解析!SNI 识别
  13. Linux .swp文件恢复
  14. RGB与16进制值互相转换
  15. python分组求和法_python – 如何将groupby值的总和除以另一个值的count
  16. 将西瓜书中的表格数字化与可视化
  17. vncserver密码修改
  18. 微软Windows8“消失”了的宣传壁纸
  19. 微信网页下载无效 微信无法打开分享的链接的解决方案
  20. java.lang.IllegalArgumentException: Schema specific part is opaque

热门文章

  1. 助力“一带一路”信息化建设,银河麒麟操作系统(藏文版)V10 全新发布!
  2. Gitlab(在线代码仓库托管软件)
  3. 美国计算机科学本科申请条件,申请美国计算机专业需要达到哪些要求
  4. 强势出圈!当NFT头像袭来,你pick哪一款?
  5. 【魔法圣诞树】代码实现详解 --多种实战编程技巧倾情打造
  6. 济南PMP俱乐部成立
  7. MATLAB综合实例:时域信号的频谱分析
  8. antd选择器下拉菜单样式修改
  9. 印有祖师爷图灵的钞票要发行了
  10. 边缘控制平面Ambassador全解读