美国新冠肺炎疫情数据利用spark进行数据分析并对结果可视化操作

--------------------------------背景需求-----------------------------


本案例以2020年美国新冠肺炎疫情数据作为数据集,以Python为编程语言,使用Spark对数据进行分析,并对分析结果进行可视化。

一、安装实验环境

1.Linux: Ubuntu 16.04
2.Hadoop:3.1.3
3.Python: 3.5
4.Spark: 2.4.0
5.Jupyter Notebook
6.java 1.8

二、下载数据集

(1)数据集来源
       本次作业使用的数据集来自数据网站Kaggle的美国新冠肺炎疫情数据集该数据集以数据表us-counties.csv组织,其中包含了美国发现首例新冠肺炎确诊病例至今(2020-05-19)的相关数据。数据包含以下字段: 字段名称 字段含义 例子 date 日期 2020/1/21;2020/1/22;etc county 区县(州的下一级单位) Snohomish; state 州 Washington cases 截止该日期该区县的累计确诊人数 1,2,3… deaths 截止该日期该区县的累计确诊人数 1,2,3…

图2-1

(2)格式转换
原始数据集是以.csv文件组织的,将us-counties.csv转换为.txt格式文件us-counties.txt。具体代码如下:
import pandas as pd
 
#.csv->.txt
data = pd.read_csv('/home/hadoop/us-counties.csv')
with open('/home/hadoop/us-counties.txt','a+',encoding='utf-8') as f:
    for line in data.values:
        f.write((str(line[0])+'\t'+str(line[1])+'\t'
                +str(line[2])+'\t'+str(line[3])+'\t'+str(line[4])+'\n'))



进入Ubuntu系统的/usr/local/hadoop目录下,查看是否成功转换成TXT文件
在这里插入图片描述

(3)将文件上传至HDFS文件系统中
启用hadoop并查看是否启动成功,具体代码如下:
./sbin/start-dfs.sh
JPS

在这里插入图片描述
在HDFS文件系统中,创建/user/hadoop文件夹,用于存放运行结果文件,具体代码如下:

./bin/hdfs dfs -mkdir -p /user/hadoop
./bin/hdfs dfs -put /usr/local/hadoop/data/us-counties.txt /user/hadoop

在这里插入图片描述

三、使用Spark对数据进行分析

(1)读取文件生成DataFrame
from pyspark import SparkConf,SparkContext
from pyspark.sql import Row
from pyspark.sql.types import *
from pyspark.sql import SparkSession
from datetime import datetime
import pyspark.sql.functions as func
 
def toDate(inputStr):
    newStr = ""
    if len(inputStr) == 8:
        s1 = inputStr[0:4]
        s2 = inputStr[5:6]
        s3 = inputStr[7]
        newStr = s1+"-"+"0"+s2+"-"+"0"+s3
    else:
        s1 = inputStr[0:4]
        s2 = inputStr[5:6]
        s3 = inputStr[7:]
        newStr = s1+"-"+"0"+s2+"-"+s3
    date = datetime.strptime(newStr, "%Y-%m-%d")
    return date
 
 
#主程序:
spark = SparkSession.builder.config(conf = SparkConf()).getOrCreate()
 
fields = [StructField("date", DateType(),False),StructField("county", StringType(),False),StructField("state", StringType(),False),
                    StructField("cases", IntegerType(),False),StructField("deaths", IntegerType(),False),]
schema = StructType(fields)
 
rdd0 = spark.sparkContext.textFile("/user/hadoop/us-counties.txt")
rdd1 = rdd0.map(lambda x:x.split("\t")).map(lambda p: Row(toDate(p[0]),p[1],p[2],int(p[3]),int(p[4])))
 
shemaUsInfo = spark.createDataFrame(rdd1,schema)
 
shemaUsInfo.createOrReplaceTempView("usInfo&
  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值