spark 对 RDDs的基础操作 整理

本文介绍了Spark的主要抽象——弹性分布式数据集(RDDs),强调其分布式特性,允许在集群节点上并行处理,最后汇总结果。相较于MapReduce,Spark为RDDs提供了更丰富的操作方法。
摘要由CSDN通过智能技术生成

写在前面:学习spark有近一个月,暂时补充RDDs算子方面的知识,每周日更新!加油!


  1.RDDs:spark的主要抽象--弹性分布式数据集
RDDs的分布式可以体现在:它可被分发到集群各个节点上进行并行操作,最后将结果合并返回。
弹性体现在:spark在对RDDs操作时会自动的进行内存和磁盘数据存储的权衡和切换。
         spark基于Lineage(血统关系图,下面会讲)的高效容错。
     RDDs最后被分配成任务执行时,Task失败会自动进行特定次数的重试
相对于MapReduce的map和reduce两种操作而言,spark扩充了更多的方法运用在RDDs的处理上。
  2.RDDs支持两种类型操作
 ①actions:在数据集上运行计算后返回值,实例:
var textFile = sc.textFile("file:///usr/local/spark/README.md"),这里需要注意的是,sc.textFile()中的文件路径默认读取HDFS中的文件,若读取本地文件,需要加file://前缀
textFile.count()//计算RDD中item的数量,对于文本文件,就是总行数。
textFile.first()//RDD中第一个item,对于文本文件,就是第一行内容
         ②transformations:转换,从现有数据集创建一个新的数据集,实例:
          val lineWithSpark = textFile.filter(line =>line.contains("Spark"))//筛选出包含Spark的行
          lineWithSpark.count()//统计行数
  textFile.map(line=> line.split(" ").size).reduce((a,b)=>if(a>b) a else b)//找到包含单词最多一行内容共有几个单词。
  3.文件的读取,除了上述用textFile来新建RDD,还可直接新建集合构造RDD
     val rdd = sc.parallelize(Array(1,2,3,4),4)//这是创建了一个四个片区partitions的整型rdd。这里应该会想到var和val的区别。val:变量值不可修改,一旦分配,不能重新指向别的值;var:分配后可指向其他值,但是前提必须类型相同。粗俗的理解就是:val常量,var变量。
  4.匿名函数及类型推断
Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体。例如:
val rdd =sc.textFile("file:///usr/local/1.txt")
val line=rdd.filter(line=>line.contains("hello"))//获取包含“hello”的行,即括号内的函数就是匿名函数,不需要指定参数line的类型,scala会进行类型推断,在此情境下li
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值