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)

 
spark弹性分布式数据集基本操作 

2.2 flatmap()操作 

rdd.flatmap(x => x.to(3))

 
spark弹性分布式数据集基本操作

2.3 filter()操作

rdd.filter(x => x!=1)

 
spark弹性分布式数据集基本操作 

2.4 distinct()操作

rdd.distinct()

 
spark弹性分布式数据集基本操作 

2.5 union()操作

     返回一个包含两个RDD中所有元素的RDD

RDD1.union(RDD2)

 
spark弹性分布式数据集基本操作

2.6 intersection()操作

    返回两个RDD都有的元素

    ① 性能比较差;

    ② 将所有数据通过网络进行混洗,发现共有的元素;

RDD1.intersection(RDD2)
 
spark弹性分布式数据集基本操作
 

2.7 subtract()操作

     排除RDD2中存在的元素

      ① 性能较差;

      ② 需要数据混洗;

RDD1.subtract(RDD2)
 
spark弹性分布式数据集基本操作
 

2.8 笛卡儿积操作

       ① 所有可能组合;如:各用户对各种产品的预期兴趣程度

       ② 求用户相似度;如:求一个RDD与自身的笛卡儿积

       ③ 求大规模笛卡儿积,开销巨大;

RDD1.cartesion(RDD2)

 
spark弹性分布式数据集基本操作
 

 

相关推荐