Scala的匿名函数简化
Scala的匿名函数可以简化得非常方便。下面以spark中的map()做例子。
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Map Example")
val sc = new SparkContext(sparkConf)
rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4))
sc.stop()
以上是共通部分,假设我们有个让RDD内数据*2的需求。 下面是最详细的map方法。
map根据输入的函数,将List里面的数字迭代输入该函数中。
def mapFunction(num:Int): Int = {
num * 2
}
val mapRDD: RDD[Int] = rdd.map(mapFunction)
当然,我们也可以使用匿名函数。
val mapRDD: RDD[Int] = rdd.map((num:Int) => { num * 2 })
当匿名函数内只有一行时,可以省略花括号。
val mapRDD: RDD[Int] = rdd.map((num:Int) => num * 2 )
当匿名函数的输入参数类型可以推断出来,那么类型可以省略。
val mapRDD: RDD[Int] = rdd.map((num) => num * 2 )
如果匿名函数内的参数只有一个时,小括号可以省略。
val mapRDD: RDD[Int] = rdd.map(num => num * 2 )
如果匿名函数的参数按照逻辑顺序出现且只出现一次时,可以使用下划线代替。
val mapRDD: RDD[Int] = rdd.map(_*2)
|