一、需求描述
随着软件技术的发展,很大庞大的数据都需要大数据技术去查询与筛选。本次实验需要熟悉Spark的RDD基本操作及键值对操作与使用RDD编程解决实际具体问题的方法。
需求一:pyspark交互式编程
本作业提供分析数据data.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:
Tom,DataBase,80 Tom,Algorithm,50 Tom,DataStructure,60 Jim,DataBase,90 Jim,Algorithm,60 Jim,DataStructure,80 …… |
根据给定的实验数据,在pyspark中通过编程来计算以下内容:
- 该系总共有多少学生;
- 该系共开设了多少门课程;
- Tom同学的总成绩平均分是多少;
- 求每名同学的选修的课程门数;
- 该系DataBase课程共有多少人选修;
- 各门课程的平均分是多少;
- 使用累加器计算共有多少人选了DataBase这门课。
需求二:编写独立应用程序实现数据去重, 对于两个输入文件A和B,编写Spark独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。
需求三:.编写独立应用程序实现求平均值问题,每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。
二、环境介绍
操作系统:Ubuntu16.04
Spark版本:2.4.0
Python版本:3.4.3
Ubuntu是一款以桌面应用为主的Linux操作系统,可以良好地运行Linux操作系统,是本学期大数据学习的主要环境。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
spark用于实现快速通用的集群计算平台,用来构建大型的、低延迟的数据分析应用程序。它扩展了广泛使用的MapReduce计算模型。高效的支撑更多计算模式,包括交互式查询和流处理。spark的一个主要特点是能够在内存中进行计算,及时依赖磁盘进行复杂的运算,Spark依然比MapReduce更加高效。RDD弹性分布式数据集(RDD)是其设计的核心为内存计算、适合计算机集群、高效率容错的可以在 Spark 上进行并行操作的关于分区数据元素的集合且是只读的在 Spark。
三、数据来源描述
大数据分析的数据来源有很多种,包括公司或者机构的内部来源和外部来源。分为以下几类:
1.交易数据。包括POS机数据、信用卡刷卡数据、电子商务数据、互联网点击数据、“企业资源规划”(ERP)系统数据、销售系统数据、客户关系管理(CRM)系统数据、公司的生产数据、库存数据、订单数据、供应链数据等。
2.移动通信数据。能够上网的智能手机等移动设备越来越普遍。移动通信设备记录的数据量和数据的立体完整度,常常优于各家互联网公司掌握的数据。移动设备上的软件能够追踪和沟通无数事件,从运用软件储存的交易数据(如搜索产品的记录事件)到个人信息资料或状态报告事件(如地点变更即报告一个新的地理编码)等。
3.人为数据。人为数据包括电子邮件、文档、图片、音频、视频,以及通过微信、博客、推特、维基、脸书、Linkedin等社交媒体产生的数据流。这些数据大多数为非结构性数据,需要用文本分析功能进行分析。
4.机器和传感器数据。来自感应器、量表和其他设施的数据、定位/GPS系统数据等。这包括功能设备会创建或生成的数据,例如智能温度控制器、智能电表、工厂机器和连接互联网的家用电器的数据。来自新兴的物联网(Io T)的数据是机器和传感器所产生的数据的例子之一。来自物联网的数据可