注意:實驗前先引入包from pyspark.context import SparkContext ,還需配置 sc = SparkContext('local', 'test') ,然後才能用sc做操作。
一、常見的轉換操作
1、map() : 將函數應用於RDD中的每個元素,將返回值構成新的RDD
2、flatMap() :將函數應用於RDD 中的每個元素,將返回的迭代器的所有內容構成新的RDD。通常用來切分單詞(以[1,2,3,4]數據集爲例)
3、filter() : 返回一個由通過傳給filter()的函數的元素組成的RDD
4、distinct() :去重
5、sample(withReplacement, fraction, [seed]) :對RDD採樣,以及是否替換(就是隨機取幾個出來,所以每次結果可能不一樣)。
以上是對一個數據集處理,下面是針對兩個以上的數據集
1、union() :生成一個包含兩個RDD 中所有元素的RDD(是所有,不得去重)
2、intersection() :求兩個RDD 共同的元素的RDD
3、subtract() :移除一個RDD 中的內容(例如移除訓練數據)
4、cartesian() : 與另一個RDD 的笛卡兒積
二、常見的行動操作
1、reduce() :它接收一個函數作爲參數,這個函數要操作兩個RDD 的元素類型的數據並返回一個同樣類型的新元素。
上面例子中,若傳入列表結果爲9;若傳入集合結果爲6,這是因爲python集合會去重了才作爲參數傳入計算。
2、fold() :它和reduce() 類似,接收一個與reduce() 接收的函數簽名相同的函數,再加上一個“初始值”來作爲每個分區第一次調用時的結果
3、collect() :返回RDD中的所有元素
注意:使用collect()要求數據不是很大,所有數據都必須能一同放入單臺機器的內存中,常用於單元測試中。
4、count() :RDD 中的元素個數
5、countByValue():各元素在RDD 中出現的次數
實驗得知,python返回的是一個字典,通過鍵可以獲取對應次數。
6、take(num) :從RDD中返回num個元素
7、top(num) :從RDD中返回最前面的num個元素
8、takeOrdered(num):函數用於從RDD中,按照默認(降序)或者指定的排序規則,返回前num個元素。
9、takeSample(withReplacement, num, [seed]):從RDD中返回任意一些元素
10、aggregate(zeroValue)(seqOp, combOp):和reduce() 相似,但是通常返回不同類型的函數
11、foreach(func):對RDD中的每個元素使用給定的函數