1 回答

TA貢獻1784條經驗 獲得超2個贊
1.RDD是PariRDD類型
def add1(line):
return line[0] + line[1]
def add2(x1,x2):
return x1 + x2
sc = SparkContext(appName="gridAnalyse")
rdd = sc.parallelize([1,2,3])
list1 = rdd.map(lambda line: (line,1)).map(lambda (x1,x2) : x1 + x2).collect() #只有一個參數,通過匹配來直接獲?。ㄙx值給里面對應位置的變量)
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 操作來確定自定義函數參數的個數,此例子中只有一個參數,從形參(集合類型)中獲取相應位置的數據。
- 1 回答
- 0 關注
- 987 瀏覽
添加回答
舉報