pyspark 簡單用法


0. PairRDD的意思
PairRDD就是元素為鍵值對的List轉化過來的RDD對象,例如


rdd_1就是一般的非pairRDD,rdd_2為pairRDD對象,而有些SparkAPI操作是針對pairRDD對象的,例如后面將要介紹的mapValues()操作。

 

1. partitionBy()函數
rdd.partitionBy(int, function),可以對RDD對象分區,第一個參數是分區的個數,第二個對象是自定義分區函數,其作用暫時沒弄清楚!

實驗代碼:

 

實驗結果:

 

在創建RDD對象的時候,采用parallelize()分了3個區,之后用partitionBy()函數,分了2個區。

 

2. cache()函數
對於需要重復用到的且占用內存小的RDD對象,可以通過rdd.cache()存儲起來,之后再次使用的時候,直接讀取內存中的RDD對象,節省時間。

 

3. mapValues()函數
rdd.mapValues(func)對pairRDD的value進行map操作,不涉及key的操作,只會修改value。

實驗代碼:

 

實驗結果:

 

可以看出,通過map()函數可以實現mapValues()函數的功能。

 

4. sortBy()
用法為:rdd.sortBy(func, ascending, numPartitions)

該函數對RDD對象中的元素進行排序,第一個參數必選,其他參數可選,func指代根據什么標准進行排序,ascending為True的時候為True升序,反之為降序, 第三個參數numPartitions指定重新分區的個數。

實驗代碼:

 

實驗結果:

 

 

5. count(), countByValue()和countByKey()
count()用於計數RDD中元素個數。

countByValue()計數RDD中不同元素的相同value的個數,即根據value相同累加。

countByKey()根據key相同累加,這三個函數中,只有countByKey()只能用於pairRDD對象,其他二者無限制。

實驗代碼:

 

實驗結果:

 

注意:countByValue()和countByKey()返回的都是map,不是List。

 

6. take()和top()
take()取RDD對象中的前幾個元素,不排序

top()取RDD對象中的最大的幾個元素,降序

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM