當前位置:編程學習大全網 - 源碼下載 - 2RDD編程

2RDD編程

rdd主要通過從各種文件系統中加載數據和通過並行集合(數組)得來。

sc.textFile用於從文件中讀取,sc.parallelize用於python對象生成rdd

Spark的SparkContext通過textFile()讀取數據生成內存中的RDD,支持本地文件系統、分布式文件系統HDFS及Amazon S3(雲端存儲服務)等等;

對於RDD而言,每壹次轉換操作都會產生不同的RDD,供壹個操作使用;

轉換得到的RDD是惰性求值的,也就是說,整個轉換過程只是記錄了轉換的軌跡,並不會發生真正的計算,只有遇到行動操作時,才會發生真正的計算,從源頭開始進行“從頭到尾”的計算操作。

filter(func) 篩選出滿足函數func的元素,並返回壹個新的數據集;

map(func)將每個元素傳遞到函數func中,並將結果返回為壹個新的數據集;

flatMap(func)與map()類似,但每個輸入元素都可以映射到0個或多個輸出結果;

groupByKey()應用於(key, value)鍵值對的數據集時,返回壹個新的(key, iterable)形式的數據集;

reduceByKey(func)應用於(key,value)鍵值對的數據集時,返回壹個新的(key,value)形式的數據集,其中每個值是將每個key傳遞到函數func中進行聚合後的結果;

count()返回數據集中的元素個數;

collect()以數組的形式返回數據集中的所有元素;

first()返回數據集中的第壹個元素;

take(n)以數組的形式返回數據集中的前n個元素;

reduce(func)通過函數func(輸入兩個參數並返回壹個值)聚合數據集中的元素;

foreach(func)將數據集中的每個元素傳遞到函數func中運行。

1.可以通過持久化(緩存)機制避免重復計算的開銷;

可以使用persist()方法對壹個RDD標記為持久化;

之所以說標記為持久化,是因為出現persist()語句的地方,並不會馬上計算生成RDD並把他持久化,而是要等到遇到第壹個行動操作觸發真正計算以後,才會把計算結果持久化;

持久化後的RDD將會被保留在計算節點的內存中被後面的行動操作重復使用。

persist()對壹個rdd標記為持久化,並不會馬上開始計算生成RDD並把它持久化;動作類型操作才會真正把它持久化。

rdd.persist(MEMORY_ONLY)存儲在內存中,內存不足,替換內容;rdd.persist(MEMORY_ONLY)效果同rdd.cache()

rdd.persist(MEMORY_AND_DISK)存儲在內存中,內存不足,存放磁盤;

rdd.unpersist()手動把持久化的rdd從緩存中刪除;

分區能增加並行度;

減少通信開銷;

分區個數盡量等於集群中CPU核心數目;

local模式默認分區個數為本地的CPU個數,若設置了local[N]則為N個;

apache mesos模式分區數目默認為8;

分區設置方法

spark分區有哈希分區、自定義分區及區域分區三種;

統計壹個文本文件中每個單詞出現的次數

  • 上一篇:Windows xp 系統 電腦關機時會彈出英文窗口
  • 下一篇:收集10個有關坐標系 勾股定理 實數 等相關數學家的典故及數學故事
  • copyright 2024編程學習大全網