一只斗牛犬
1.RDD是PariRDD类型def add1(line):return line[0] + line[1]def add2(x1,x2):return x1 + x2sc = SparkContext(appName="gridAnalyse")rdd = sc.parallelize([1,2,3])list1 = rdd.map(lambda line: (line,1)).map(lambda (x1,x2) : x1 + x2).collect() #只有一个参数,通过匹配来直接获取(赋值给里面对应位置的变量)list1 = rdd.map(lambda line: (line,1)).map(lambda x1,x2 : x1 + x2).collect() #错误,相当于函数有两个参数list2 = rdd.map(lambda line: (line,1)).map(lambda line : line[0] + line[1]).collect() #只有一个参数,参数是Tuple或List数据类型,再从集合的对应位置取出数据list3 = rdd.map(lambda line: (line,1)).map(add1).collect() #传递函数,将Tuple或List类型数据传给形参list4 = rdd.map(lambda line: (line,1)).map(add2).collect() #错误,因为输入只有一个,却有两个形参当RDD是PairRDD时,map中可以写lambda表达式和传入一个函数。a、写lambda表达式:可以通过(x1,x2,x3)来匹配获取值;或者使用line获取集合,然后从集合中获取。b、传入函数根据spark具体的transaction OR action 操作来确定自定义函数参数的个数,此例子中只有一个参数,从形参(集合类型)中获取相应位置的数据。