Spark(21)-Scala遍历操作,map,flatMap,fliter,reduce,fold

 遍历操作

列表遍历

 映射遍历(很多)

for循环遍历

for循环+模式匹配

 foreach遍历,case样例类来匹配,占位符来匹配(元组的表达方式)

university.foreach{ }

a方法b     a.方法(b )

朗母达表达式,匿名函数case模式匹配,kv._1表示匹配的键,kv._2表示的匹配的值,这是元组的表达方式,这些遍历方法都可以去尝试。

map操作

map非常典型,如下例子,我们调用map函数,对每一个元素依次遍历一遍,

对lambda表达式含义的解释--->遍历到的元素赋值给s,然后让s去执行后续方法,这样就可以一个一个转换掉,此例中,会把值给s,然后执行.toUpperCase方法,然后再遍历,再执行下去.

记住map一定是一一映射,给它几个元素,他就得到几个元素。

flatMap操作

flatMap函数与map不一样,它将原来单个的元素,经过flatMap后,就变成多个元素了。

为什么叫flatMap呢?

:flat在中文中意思是扁平,就相当于把一罐元素拍扁了,出来许多元素。这些元素就构成了很大的集合,得到非常多的元素构成的整体的集合,就是我们所要的结果。

代码解释:

books flatMap (s => s.toList) ,之前提到的a 方法 b 等价于 a.方法b ,

在这里等价于 books.flatMap(s => s.toList),只是写法不一样

下面的朗母达表达式(s => s.toList),s.toList是将字符串转换成一个列表。把Hadoop给s.toList......对词频统计很重要。

filter操作

 1、如上代码,我们定义的是university变量,然后用filter去过滤

university filter {kv => kv._2 contains "Xiamen"} 等价于 university.filter()

给出的 {kv => kv._2 contains "Xiamen"} 是函数的具体值,为一个lambda表达式,含义为传递给filiter方法的参数,传递给filter方法什么样的参数,这个filter就用这个参数去过滤。

同理还可过滤如下

       

reduce函数归约

 1、如上,示例中reduce是一个函数,list.reduceLeft( ) ,括号里面传递给它的一些函数,这里给的函数式 _ + _ , 下划线加下划线 等价于(x => x + y),因为只出现一次啊

然后开始归约求值,从左侧开始归约,默认情况下,

fold操作

fold操作需要给一个初始值,

list.fold(10)(_ * _),    _ * _  等价于 (s => s * y)

10 作为初始的s ,10 * 1,10 * 2, 20 * 3 ,60 * 4,240 *5  

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark算子是Spark框架中的一种操作符,用于对RDD(弹性分布式数据集)进行转换和操作Scala版本的Spark算子可以通过编写Scala代码来实现,常用的算子包括map、filter、reduce、join等。这些算子可以帮助开发者快速地进行数据处理和分析,提高数据处理效率和准确性。 ### 回答2: Spark算子是Spark中的一个很重要的概念,它主要是用于数据的转换和处理。在Scala版本中,Spark算子有两种不同的类型,一个是转换操作的算子,另一个是行动操作的算子。这些算子被组织成RDD的API,以便在分布式环境中进行操作,从而实现高效的计算。 对于Spark算子来说,它的灵活性和方便性是非常重要的。因为在实际应用中,数据的处理往往是非常复杂和混杂的。这时,使用Spark算子可以很快地将数据转换成需要的格式,以便进行后续的处理。同时,Spark算子还可以极大地提高处理数据的效率,因为它们是在分布式集群上进行处理的,这样就可以大大缩短处理时间。 在Scala版本中,首要的算子是map算子,它可以非常方便地对数据进行转换。除此之外,还有很多常用的算子,比如flatMapreduceByKey、groupBy等,它们都具有一些独特的特性和用法,可以根据实际情况选择使用。当然,对于更加复杂的数据处理操作,也可以自定义函数来实现。Spark算子可以很容易地与自定义函数进行结合,从而实现更加灵活的数据处理操作。 总之,Spark算子是Spark中一个非常重要的概念,它可以帮助我们高效地转换和处理数据。在Scala版本中,Spark算子是非常方便和易用的,可以满足各种不同场景下的需求。无论是初学者还是专业人士,都可以通过学习Spark算子来进一步提高自己的数据处理和计算能力。 ### 回答3: Spark是一种流行的分布式计算框架,它提供了自己的编程模型,称为Resilient Distributed Datasets(RDDs)。Scala是一种运行在Java虚拟机上的编程语言,它可以与Spark很好地配合使用,为Spark提供了Scala API,使得开发者可以使用Scala语言进行Spark开发。 在Scala API中,Spark提供了很多有用的算子,这些算子可以用于在分布式集群上操作RDDs。这些算子可以分为两类:转换算子和动作算子。 转换算子用于接受一个RDD,并返回一个新的RDD,这个新的RDD表示对原始RDD的一些转换操作。在这里,我们可以使用各种不同的转换功能,例如mapflatMap和filter。这些算子允许我们执行各种数据操作,例如将一组元素映射到另一组元素,或者仅选择符合某些条件的元素,等等。 动作算子用于接受一个RDD,并返回单个结果。这些算子在执行过程中会计算原始RDD的结果,并将结果返回给驱动程序。这些算子包括reduce、count、collect和foreach等。在这里,我们可以使用这些算子计算和收集RDD中特定的元素或结果。 总之,Spark算子是Spark Scala API中的核心组件,使得开发者可以简便地操作分布式计算集群上的大型数据集。这些算子是开发Spark应用程序的基本部分,开发者应该了解它们的工作方式,以便能够更高效地处理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值