- 需求描述
本次实验需要熟悉Spark的RDD基本操作及键值对操作,熟悉使用RDD编程解决实际具体问题的方法。并且能够在能够熟练掌握Linux的基本操作上,使用RDD编程,解决一系列的问题。本次实验的需求有pyspark交互式编程,编写独立应用来实现数据的去重操作,编写独立应用程序实现求平均值的问题。 - 环境介绍
使用的是oracle VM virtualBox,虚拟机的操作系统为Ubuntu16.04,Spark版本为2.4.0,Python版本为3.4.3,,虚拟机的内存为4G,hadoop为2.7.1,JDK版本为1.8,使用Mysql数据库,Hbase为1.1.5,Scala为2.11.8,主机为8G内存128固态加1T机械,i5七代,独立显卡为GTX1050,使用的win10专业版。 - 数据来源描述
A.txt, Algorithm.txt,B.txt,data.txt,Database.txt,Python.txt等数据均是由网上查找的。data.txt包括了某大学的计算机成绩格式为(姓名,课程,成绩)。A,B两个文件是包含数字加字母格式(数字,字母),Algorithm.txt,Database.txt,Python.txt是包含姓名与成绩,格式为(姓名,成绩) - 数据上传及上传结果查看
A.txt
B.txt
Algorithm.txt
Database.txt
Python.txt
5、数据处理过程描述
Pyspark交互式编程
- 该系总共有多少学生;
- 该系共开设了多少门课程;
- Tom同学的总成绩平均分是多少;
- 求每名同学的选修的课程门数;
- 该系DataBase课程共有多少人选修;
- 各门课程的平均分是多少;
- 使用累加器计算共有多少人选了DataBase这门课。
-
编写独立应用程序实现数据去重
-
编写独立应用程序实现求平均值的问题
-
经验总结
总的来说,每个 Spark 程序或 shell 会话都按如下方式工作。
(1) 从外部数据创建出输入 RDD。
(2) 使用诸如 filter() 这样的转化操作对 RDD 进行转化,以定义新的 RDD。
(3) 告诉 Spark 对需要被重用的中间结果 RDD 执行 persist() 操作。
(4) 使用行动操作(例如 count() 和 first() 等)来触发一次并行计算,Spark 会对计算进行优化后再执行。RDD 支持两种操作:转化操作和行动操作。RDD 的转化操作是返回一个新的 RDD 的操作,比如 map() 和 filter() ,而行动操作则是向驱动器程序返回结果或把结果写入外部系统的操作,会触发实际的计算,比如 count() 和 first() 。Spark 对待转化操作和行动操作的方式很不一样,因此理解你正在进行的操作的类型是很重要的。如果对于一个特定的函数是属于转化操作还是行动操作感到困惑,你可以看看它的返回值类型:转化操作返回的是 RDD,而行动操作返回的是其他的数据类型。