目标:

  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. 时空穿越!谷歌利用众包老照片还原儿时3D街景,浏览器即可体验
  2. 业界 | 清华发布《人工智能芯片技术白皮书(2018)》
  3. SetWindowOrg等相关函数
  4. oracle 查看连接数
  5. 为什么调用thread.Abort(),线程不会马上停止
  6. 2007级计算机技术专科毕业设计,2007级计算机科学与技术本科毕业设计选题
  7. asp.net MVC中怎样让LINQ Designer自动生成的类从别的类继承并调用其基类构造器?...
  8. 经典机器学习系列(八)【支持向量机】
  9. 拓端tecdat|使用R语言创建自定义桑基图Sankey图
  10. [数据库事务与锁]详解四: 数据库的锁机制
  11. 2019电子设计大赛:纸张计数显示装置
  12. LaTeX常用符号(持续更新)
  13. 8cm等于多少像素_厘米与像素一张图片,要打印尺寸为10.8厘米*17厘米,图片要编 爱问知识人...
  14. 【FTP】FTP连接时出现“227 Entering Passive Mode”的解决方法
  15. 微信小程序 带可拖动进度条和时间显示的音频播放器
  16. 哪一款iPhone拍照效果最好?拍照最好用的苹果手机是哪款
  17. css 排版_Web排版的未来:CSS字体4级
  18. epub文件是什么文件?如何在windows系统上打开?
  19. 【数学建模】十:MATLAB CUMCM真题求解实例一:数据型
  20. Go The Way 之切片

热门文章

  1. java包名命名规范
  2. 关于依赖管理的真相 — 前端包管理器探究
  3. matlab给定输入信号,MATLAB信号频谱分析
  4. Android布局measure,Android View的Measure测量流程全解析
  5. 太赫兹在医学诊断方面的应用
  6. 八年级计算机课教案全册,八年级.信息技术教案课件教材汇总(全册.).doc
  7. android spinner自定义样式,android自定义Spinner下拉菜单(下拉列表框)样式
  8. 【黑马程序员】C++核心编程2 -类与对象(封装、继承和多态)-this指针-友元-运算重载符-文本操作(附测试用例源码、测试结果图及详细注释)
  9. 面试常见问题:如何回答才得体?
  10. 几米 让人心微痛的经典