Spark期末大作业

一、需求描述

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

本次实验环境为Linux:Ubuntu 18.04、Hadoop3.1.3、Python: 3.6、Spark: 2.4.0、Jupyter Notebook。

本次作业使用的数据集来自数据网站Kaggle的美国新冠肺炎疫情数据集,该数据集以数据表us-counties.csv组织,其中包含了美国发现首例新冠肺炎确诊病例至今(2020-05-19)的相关数据。其中,Hadoop需要配置完全并启动,pip需要更新到22.0以上版本并利用“pip3 install pandas”命令安装pandas包,python版本要更新到3.6以上并设置成默认版本。

二、环境介绍

在Hadoop官网下载hadoop-3.1.3.tar.gz,创建hadoop用户,安装SSH、配置SSH无密码登陆,安装Java环境,配置Hadoop单机 (非分布式),配置Hadoop伪分布式,配置完成以后运行Hadoop伪分布式实例并创建实验所需的文件夹。在Spark官网下载Spark2.4.0,安装Hadoop(伪分布式),安装JAVA JDK,安装Spark(Local模式)。python版本为3.8、Python pip版本为22.0。

三、数据处理

数据集来自数据网站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…


数据上传及上传结果查看

Us-counties.csv文件:

 

格式转换后的Us-counties.txt文件:

 

 

格式转换

原始数据集是以.csv文件组织的,为了方便spark读取生成RDD或者DataFrame,首先将us-counties.csv转换为.txt格式文件us-counties.txt。转换操作使用python实现,代码组织在toTxt.py中,具体代码

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'))

输入命令“python3 toTxt.py”执行

转换后的us-counties.txt文件如下:

将文件上传至HDFS文件系统中

然后使用如下命令把本地文件系统的“/home/hadoop/us-counties.txt”上传到HDFS文件系统中,具体路径是“/user/hadoop/us-counties.txt”。具体命令如下:

./bin/hdfs dfs -put /home/hadoop/us-counties.txt /user/hadoop

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

这里采用Python作为编程语言。

1. 完整代码

本部分操作的完整实验代码存放在了analyst.py中,具体如下:

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 =
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值