调用一个方法,将鼠标移动到括号里面,会自动给出提示
如果是一般参数,不会出现f。如果是黑色加粗,说明是必须得有,如果没有加粗,说明可以没有
如果出现f,说明是个函数
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("Test").setMaster("local")
val sc = new SparkContext(conf)
val myArray=Array(1,1,2,3,4,5)
val rdd=sc.parallelize(myArray)
//reduce(f: (T, T) ⇒ T): T 官网给出的说明。意思是参数是一个函数。函数的参数是一个int对,返回值是一个int
def func_reduce(a:Int,b:Int):Int={
return 10
}
val reduce_func1__rdd=rdd.reduce(func_reduce)
println("reduce_func1" + reduce_func1__rdd)
//这里是匿名函数
val reduce_func2_rdd=rdd.reduce( (x,y)=> x+y )
println(" reduce_fun2"+ reduce_func2_rdd )
//返回一个pair类型的RDD RDD[key,value]
val rdd_par=rdd.map( (x)=> (x,x*10) )
//把key相同的pair组合在一起,并且key相同的value相加
val count1=rdd_par.reduceByKey( (x,y) => x+y )
//更加简单的匿名函数 _._2 每个pair的第二个值
val pair_to_int_1=rdd_par.map(_._2)
//直接用函数实现
def myFunc(pair:(Int,Int)):Int={
pair._2
}
val pair_to_int_2=rdd_par.map(myFunc)
pair_to_int_1.foreach( println(_) )
pair_to_int_2.foreach( println(_) )
sc.stop()
}