亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RDD的類型有哪些

發布時間:2021-12-22 15:33:48 來源:億速云 閱讀:409 作者:iii 欄目:開發技術

這篇文章主要講解了“RDD的類型有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“RDD的類型有哪些”吧!

一、RDD定義

  RDD(Resilient Distributed Dataset)叫做分布式數據集,是Spark中最基本的數據抽象,它代表一個不可變(數據和元數據)、可分區、里面的元素可并行計算的集合。其特點在于自動容錯,位置感知性調度和可伸縮性。

二、RDD的屬性

  1.一組分片。即數據集的基本組成單位。對于RDD來說,每個分片都會被一個計算任務處理,并決定并行計算的粒度。用戶可以在創建RDD時指定RDD的分片個數,如果沒有指定,那么就會采用默認值。默認值就是程序所分配到的CPU Core的數目。

  2.一個計算每個分區的函數。Spark中RDD的計算是以分片為單位的,每個RDD都會實現compute函數以達到這個目的。compute函數會對迭代器進行復合,不需要保存每次計算的結果。

  3.RDD之間的依賴關系。RDD的每次轉換都會生成一個新的RDD,所以RDD之間就會形成類似于流水線一樣的前后依賴關系。這里要提及一個概念——容錯處理:,即在部分分區數據丟失時,Spark可以通過這個依賴關系重新計算丟失的分區數據,而不是對RDD的所有分區進行重新計算。

  4.一個Partitioner,分區器。即RDD的分片函數。當前Spark中實現了兩種類型的分片函數,一個是基于哈希的HashPartitioner,另外一個是基于范圍的RangePartitioner。只有對于key-value的RDD,才會有Partitioner,非key-value的RDD的Parititioner的值是None。Partitioner函數不但決定了RDD本身的分片數量,也決定了parent RDD Shuffle輸出時的分片數量。

  5.一個列表。存儲存取每個Partition的優先位置(preferred location)。

  對于一個HDFS文件來說,這個列表保存的就是每個Partition所在的塊的位置。按照“移動數據不如移動計算”的理念,Spark在進行任務調度的時候,會盡可能地將計算任務分配到其所要處理數據塊的存儲位置。

三、RDD類型

1.Transformation -> 記錄計算過程(記錄參數,計算方法)

轉換

含義

map(func)

返回一個新的RDD,該RDD由每一個輸入元素經過func函數轉換后組成

filter(func)

返回一個新的RDD,該RDD由經過func函數計算后返回值為true的輸入元素組成

flatMap(func)

類似于map,但是每一個輸入元素可以被映射為0或多個輸出元素(所以func應該返回一個序列,而不是單一元素)

mapPartitions(func)

類似于map,但獨立地在RDD的每一個分片上運行,因此在類型為T的RDD上運行時,func的函數類型必須是Iterator[T] => Iterator[U]

mapPartitionsWithIndex(func)

類似于mapPartitions,但func帶有一個整數參數表示分片的索引值,因此在類型為T的RDD上運行時,func的函數類型必須是

(Int, Iterator[T]) => Iterator[U]

sample(withReplacement, fraction, seed)

根據fraction指定的比例對數據進行采樣,可以選擇是否使用隨機數進行替換,seed用于指定隨機數生成器種子

union(otherDataset)

對源RDD和參數RDD求并集后返回一個新的RDD

intersection(otherDataset)

diff -> 差集

對源RDD和參數RDD求交集后返回一個新的RDD

distinct([numTasks]))

         [改變分區數]

對源RDD進行去重后返回一個新的RDD

groupByKey([numTasks])

在一個(K,V)的RDD上調用,返回一個(K, Iterator[V])的RDD

reduceByKey(func, [numTasks])

在一個(K,V)的RDD上調用,返回一個(K,V)的RDD,使用指定的reduce函數,將相同key的值聚合到一起,與groupByKey類似,reduce任務的個數可以通過第二個可選的參數來設置

aggregateByKey(zeroValue)(seqOp, combOp, [numTasks])


sortByKey([ascending], [numTasks])

在一個(K,V)的RDD上調用,K必須實現Ordered接口,返回一個按照key進行排序的(K,V)的RDD

sortBy(func,[ascending], [numTasks])

與sortByKey類似,但是更靈活

join(otherDataset, [numTasks])

在類型為(K,V)和(K,W)的RDD上調用,返回一個相同key對應的所有元素對在一起的(K,(V,W))的RDD

cogroup(otherDataset, [numTasks])

在類型為(K,V)和(K,W)的RDD上調用,返回一個(K,(Iterable<V>,Iterable<W>))類型的RDD

cartesian(otherDataset)

笛卡爾積

pipe(command, [envVars])


coalesce(numPartitions)


repartition(numPartitions)

 重新分區

repartitionAndSortWithinPartitions(partitioner)


2.Action  -> 觸發生成job(一個job對應一個action算子)

動作

含義

reduce(func)

通過func函數聚集RDD中的所有元素,這個功能必須是可交換且可并聯的

collect()

在驅動程序中,以數組的形式返回數據集的所有元素

count()

返回RDD的元素個數

first()

返回RDD的第一個元素(類似于take(1))

take(n)

取數據集的前n個元素組成的數組

takeSample(withReplacement,num, [seed])

返回一個數組,該數組由從數據集中隨機采樣的num個元素組成,可以選擇是否用隨機數替換不足的部分,seed用于指定隨機數生成器種子

takeOrdered(n[ordering])

takeOrdered和top類似,只不過以和top相反的順序返回元素

saveAsTextFile(path)

將數據集的元素以textfile的形式保存到HDFS文件系統或者其他支持的文件系統,對于每個元素,Spark將會調用toString方法,將它裝換為文件中的文本

saveAsSequenceFile(path

將數據集中的元素以Hadoop sequencefile的格式保存到指定的目錄下,可以使HDFS或者其他Hadoop支持的文件系統。

saveAsObjectFile(path


countByKey()

針對(K,V)類型的RDD,返回一個(K,Int)的map,表示每一個key對應的元素個數。

foreach(func)

在數據集的每一個元素上,運行函數func進行更新。

感謝各位的閱讀,以上就是“RDD的類型有哪些”的內容了,經過本文的學習后,相信大家對RDD的類型有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節
推薦閱讀:
  1. Spark Core 的RDD
  2. RDD編程

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

rdd
AI

扎赉特旗| 明光市| 苏尼特左旗| 凤庆县| 英吉沙县| 子洲县| 扶风县| 柯坪县| 湟中县| 自治县| 木里| 大方县| 开鲁县| 翁源县| 东辽县| 那坡县| 永济市| 将乐县| 水富县| 文化| 都昌县| 万源市| 达拉特旗| 杨浦区| 岑溪市| 兴业县| 万州区| 阿坝县| 海南省| 兰考县| 嘉祥县| 梅河口市| 遵化市| 海原县| 八宿县| 北碚区| 锦州市| 积石山| 株洲市| 扬州市| 宜州市|