spark弹性分布式数据集基本操作
一、spark和hadoop的区别
① hadoop和spark都是大数据框架,彼此执行的任务并不相同,也并不排斥;
② spark使用分布式内存计算及流处理方式,在速度上有明显优势;
③ spark大部分操作都是在内存中,
而hadoop的MapReduce系统会在每次操作之后将所有数据写回到物理存储介质上;
④ spark本身没有一个分布式存储系统,
因此,许多大数据项目都将spark安装在hadoop上,
这样,spark程序就能直接使用HDFS上的数据;
⑤ spark有自己的机器学习库MLib,
而hadoop系统则需要借助第三方机器学习库,如:Apache Mahout;
⑥ 总的来说,hadoop MapReduce引爆了大数据产业革命,spark则是对其的改进;
二、spark弹性分布式数据集基本操作
1 弹性分布式数据集
RDD,弹性分布式数据集,是spark对分布式数据和计算的基本抽象。
2 RDD操作
2.1 map()操作
rdd.map(x => x+1)
2.2 flatmap()操作
rdd.flatmap(x => x.to(3))
2.3 filter()操作
rdd.filter(x => x!=1)
2.4 distinct()操作
rdd.distinct()
2.5 union()操作
返回一个包含两个RDD中所有元素的RDD
RDD1.union(RDD2)
2.6 intersection()操作
返回两个RDD都有的元素
① 性能比较差;
② 将所有数据通过网络进行混洗,发现共有的元素;
RDD1.intersection(RDD2)
2.7 subtract()操作
排除RDD2中存在的元素
① 性能较差;
② 需要数据混洗;
RDD1.subtract(RDD2)
2.8 笛卡儿积操作
① 所有可能组合;如:各用户对各种产品的预期兴趣程度
② 求用户相似度;如:求一个RDD与自身的笛卡儿积
③ 求大规模笛卡儿积,开销巨大;
RDD1.cartesion(RDD2)