RDD编程初级实践
文章目录
spark的特点
1.快:与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上;而基于磁盘的运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效地处理数据流。
2.容易使用:Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同应用。而且Spark支持交互式的Python和Scala的Shell,这意味着可以非常方便的在这些Shell中使用Spark集群来验证解决问题的方法,而不是像以前一样,需要打包、上传集群、验证等。这对于原型开发非常重要。
3.通用性:Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(通用Spark SQL)、实时流处理(通过Spark Streaming)、机器学习(通过Spark MLlib)和图计算(通过Spark GraphX)。
一、数据来源、环境介绍
本次实验使用到的数据集:data.txt; A.txt; B.txt; Algorithm.txt; Database.txt; Python.txt。
实验环境:Ubuntu Kylin 16.04;Spark 2.4.8 ;Python 3.1.4
二、实验步骤
1.将文件弄到虚拟机里
因为没有下载安装FinaShell,所以要想把文件弄到虚拟机内只能用qq邮箱传送下载的方法。
2.配置pyspark环境
放两个链接
http://dblab.xmu.edu.cn/blog/2501-2/
http://dblab.xmu.edu.cn/blog/2427-2/
按照里面的做就可以了
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
3.数据处理过程与结果
该处使用的url网络请求的数据。
(1)处理data.txt文件
该数据集包含了某大学计算机系的成绩,我们提取成绩要在pyspark shell界面中通过编程来操作,并且要通过输入pyspark来直接进入,不能通过上面例子中检测pyspark能否运行的方法:
这种事不行的
*要用这种
下面开始处理文件:
1.该系总共有多少学生
代码如下(示例):
lines = sc.textFile("file:///usr/local/spark/data.txt")
res = lines.map(lambda x:x.split(",")).map(lambda x:x[0])
sum = res.distinct()
sum.count()
2.该系共开设了多少门课程
代码如下(示例):
lines = sc.textFile("file:///usr/local/spark/data.txt")
res = lines.map(lambda x:x.split(",")).map(lambda x:x[1])
sum = res.distinct()
sum.count()
3.Tom同学的总成绩平均分是多少