Spark基礎轉換及行動操作(python實驗)

注意:實驗前先引入包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中的每個元素使用給定的函數




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章