中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

創(chuàng)建RDD的方式有哪些-創(chuàng)新互聯(lián)

這篇文章主要講解了“創(chuàng)建RDD的方式有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“創(chuàng)建RDD的方式有哪些”吧!

邯山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

1.從集合中創(chuàng)建RDD

 val conf = new SparkConf().setAppName("Test").setMaster("local")
      val sc = new SparkContext(conf)
      //這兩個(gè)方法都有第二參數(shù)是一個(gè)默認(rèn)值2  分片數(shù)量(partition的數(shù)量)
      //scala集合通過makeRDD創(chuàng)建RDD,底層實(shí)現(xiàn)也是parallelize
      val rdd1 = sc.makeRDD(Array(1,2,3,4,5,6))
     //scala集合通過parallelize創(chuàng)建RDD
      val rdd2 = sc.parallelize(Array(1,2,3,4,5,6))

2.從外部存儲創(chuàng)建RDD

 //從外部存儲創(chuàng)建RDD
 val rdd3 = sc.textFile("hdfs://hadoop01:8020/word.txt")

RDD編程API

RDD支持兩種操作:轉(zhuǎn)化操作和行動操作。RDD 的轉(zhuǎn)化操作是返回一個(gè)新的 RDD的操作,比如 map()和 filter(),而行動操作則是向驅(qū)動器程序返回結(jié)果或把結(jié)果寫入外部系統(tǒng)的操作。比如 count() 和 first()。

Spark采用惰性計(jì)算模式,RDD只有第一次在一個(gè)行動操作中用到時(shí),才會真正計(jì)算。Spark可以優(yōu)化整個(gè)計(jì)算過程。默認(rèn)情況下,Spark 的 RDD 會在你每次對它們進(jìn)行行動操作時(shí)重新計(jì)算。如果想在多個(gè)行動操作中重用同一個(gè) RDD,可以使用 RDD.persist() 讓 Spark 把這個(gè) RDD 緩存下來。

Transformation算子

RDD中的所有轉(zhuǎn)換都是延遲加載的,也就是說,它們并不會直接計(jì)算結(jié)果。相反的,它們只是記住這些應(yīng)用到基礎(chǔ)數(shù)據(jù)集(例如一個(gè)文件)上的轉(zhuǎn)換動作。只有當(dāng)發(fā)生一個(gè)要求返回結(jié)果給Driver的動作時(shí),這些轉(zhuǎn)換才會真正運(yùn)行。這種設(shè)計(jì)讓Spark更加有效率地運(yùn)行。

轉(zhuǎn)換

含義

map(func)

返回一個(gè)新的RDD,該RDD由每一個(gè)輸入元素經(jīng)過func函數(shù)轉(zhuǎn)換后組成

filter(func)

返回一個(gè)新的RDD,該RDD由經(jīng)過func函數(shù)計(jì)算后返回值為true的輸入元素組成

flatMap(func)

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

mapPartitions(func)

類似于map,但獨(dú)立地在RDD的每一個(gè)分片上運(yùn)行,因此在類型為T的RDD上運(yùn)行時(shí),func的函數(shù)類型必須是Iterator[T] => Iterator[U]

mapPartitionsWithIndex(func)

類似于mapPartitions,但func帶有一個(gè)整數(shù)參數(shù)表示分片的索引值,因此在類型為T的RDD上運(yùn)行時(shí),func的函數(shù)類型必須是(Int, Iterator[T]) => Iterator[U]

sample(withReplacement, fraction, seed)

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

union(otherDataset)

對源RDD和參數(shù)RDD求并集后返回一個(gè)新的RDD

intersection(otherDataset)

對源RDD和參數(shù)RDD求交集后返回一個(gè)新的RDD

distinct([numTasks]))

對源RDD進(jìn)行去重后返回一個(gè)新的RDD

groupByKey([numTasks])

在一個(gè)(K,V)的RDD上調(diào)用,返回一個(gè)(K, Iterator[V])的RDD

reduceByKey(func, [numTasks])

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

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

相同的Key值進(jìn)行聚合操作,在聚合過程中同樣使用了一個(gè)中立的初始值zeroValue:中立值,定義返回value的類型,并參與運(yùn)算seqOp:用來在同一個(gè)partition中合并值combOp:用來在不同partiton中合并值

sortByKey([ascending], [numTasks])

在一個(gè)(K,V)的RDD上調(diào)用,K必須實(shí)現(xiàn)Ordered接口,返回一個(gè)按照key進(jìn)行排序的(K,V)的RDD

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

與sortByKey類似,但是更靈活

join(otherDataset, [numTasks])

在類型為(K,V)和(K,W)的RDD上調(diào)用,返回一個(gè)相同key對應(yīng)的所有元素對在一起的(K,(V,W))的RDD

cogroup(otherDataset, [numTasks])

在類型為(K,V)和(K,W)的RDD上調(diào)用,返回一個(gè)(K,(Iterable,Iterable))類型的RDD

cartesian(otherDataset)

笛卡爾積

pipe(command, [envVars])

將一些shell命令用于Spark中生成新的RDD

coalesce(numPartitions)

重新分區(qū)

repartition(numPartitions)

重新分區(qū)

repartitionAndSortWithinPartitions(partitioner)

重新分區(qū)和排序

 Action算子

在RDD上運(yùn)行計(jì)算,并返回結(jié)果給Driver或?qū)懭胛募到y(tǒng)

動作

含義

reduce(func)

通過func函數(shù)聚集RDD中的所有元素,這個(gè)功能必須是可交換且可并聯(lián)的

collect()

在驅(qū)動程序中,以數(shù)組的形式返回?cái)?shù)據(jù)集的所有元素

count()

返回RDD的元素個(gè)數(shù)

first()

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

take(n)

返回一個(gè)由數(shù)據(jù)集的前n個(gè)元素組成的數(shù)組

takeSample(withReplacement,num, [seed])

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

takeOrdered(n, [ordering])

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

saveAsTextFile(path)

將數(shù)據(jù)集的元素以textfile的形式保存到HDFS文件系統(tǒng)或者其他支持的文件系統(tǒng),對于每個(gè)元素,Spark將會調(diào)用toString方法,將它裝換為文件中的文本

saveAsSequenceFile(path)

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

saveAsObjectFile(path)


countByKey()

針對(K,V)類型的RDD,返回一個(gè)(K,Int)的map,表示每一個(gè)key對應(yīng)的元素個(gè)數(shù)。

foreach(func)

在數(shù)據(jù)集的每一個(gè)元素上,運(yùn)行函數(shù)func進(jìn)行更新。

RDD支持兩種操作:轉(zhuǎn)化操作和行動操作。RDD 的轉(zhuǎn)化操作是返回一個(gè)新的 RDD的操作,比如 map()和 filter(),而行動操作則是向驅(qū)動器程序返回結(jié)果或把結(jié)果寫入外部系統(tǒng)的操作。比如 count() 和 first()。

Spark采用惰性計(jì)算模式,RDD只有第一次在一個(gè)行動操作中用到時(shí),才會真正計(jì)算。Spark可以優(yōu)化整個(gè)計(jì)算過程。默認(rèn)情況下,Spark 的 RDD 會在你每次對它們進(jìn)行行動操作時(shí)重新計(jì)算。如果想在多個(gè)行動操作中重用同一個(gè) RDD,可以使用 RDD.persist() 讓 Spark 把這個(gè) RDD 緩存下來。

Transformation算子****

RDD中的所有轉(zhuǎn)換都是延遲加載的,也就是說,它們并不會直接計(jì)算結(jié)果。相反的,它們只是記住這些應(yīng)用到基礎(chǔ)數(shù)據(jù)集(例如一個(gè)文件)上的轉(zhuǎn)換動作。只有當(dāng)發(fā)生一個(gè)要求返回結(jié)果給Driver的動作時(shí),這些轉(zhuǎn)換才會真正運(yùn)行。這種設(shè)計(jì)讓Spark更加有效率地運(yùn)行。

轉(zhuǎn)換含義
map(func)返回一個(gè)新的RDD,該RDD由每一個(gè)輸入元素經(jīng)過func函數(shù)轉(zhuǎn)換后組成
filter(func)返回一個(gè)新的RDD,該RDD由經(jīng)過func函數(shù)計(jì)算后返回值為true的輸入元素組成
flatMap(func)類似于map,但是每一個(gè)輸入元素可以被映射為0或多個(gè)輸出元素(所以func應(yīng)該返回一個(gè)序列,而不是單一元素)
mapPartitions(func)類似于map,但獨(dú)立地在RDD的每一個(gè)分片上運(yùn)行,因此在類型為T的RDD上運(yùn)行時(shí),func的函數(shù)類型必須是Iterator[T] => Iterator[U]
mapPartitionsWithIndex(func)類似于mapPartitions,但func帶有一個(gè)整數(shù)參數(shù)表示分片的索引值,因此在類型為T的RDD上運(yùn)行時(shí),func的函數(shù)類型必須是(Int, Iterator[T]) => Iterator[U]
sample(withReplacement, fraction, seed)根據(jù)fraction指定的比例對數(shù)據(jù)進(jìn)行采樣,可以選擇是否使用隨機(jī)數(shù)進(jìn)行替換,seed用于指定隨機(jī)數(shù)生成器種子
union(otherDataset)對源RDD和參數(shù)RDD求并集后返回一個(gè)新的RDD
intersection(otherDataset)對源RDD和參數(shù)RDD求交集后返回一個(gè)新的RDD
distinct([numTasks]))對源RDD進(jìn)行去重后返回一個(gè)新的RDD
groupByKey([numTasks])在一個(gè)(K,V)的RDD上調(diào)用,返回一個(gè)(K, Iterator[V])的RDD
reduceByKey(func, [numTasks])在一個(gè)(K,V)的RDD上調(diào)用,返回一個(gè)(K,V)的RDD,使用指定的reduce函數(shù),將相同key的值聚合到一起,與groupByKey類似,reduce任務(wù)的個(gè)數(shù)可以通過第二個(gè)可選的參數(shù)來設(shè)置
aggregateByKey(zeroValue)(seqOp, combOp, [numTasks])相同的Key值進(jìn)行聚合操作,在聚合過程中同樣使用了一個(gè)中立的初始值zeroValue:中立值,定義返回value的類型,并參與運(yùn)算seqOp:用來在同一個(gè)partition中合并值combOp:用來在不同partiton中合并值
sortByKey([ascending], [numTasks])在一個(gè)(K,V)的RDD上調(diào)用,K必須實(shí)現(xiàn)Ordered接口,返回一個(gè)按照key進(jìn)行排序的(K,V)的RDD
sortBy(func,[ascending], [numTasks])與sortByKey類似,但是更靈活
join(otherDataset, [numTasks])在類型為(K,V)和(K,W)的RDD上調(diào)用,返回一個(gè)相同key對應(yīng)的所有元素對在一起的(K,(V,W))的RDD
cogroup(otherDataset, [numTasks])在類型為(K,V)和(K,W)的RDD上調(diào)用,返回一個(gè)(K,(Iterable,Iterable))類型的RDD
cartesian(otherDataset)笛卡爾積
pipe(command, [envVars])將一些shell命令用于Spark中生成新的RDD
coalesce(numPartitions)重新分區(qū)
repartition(numPartitions)重新分區(qū)
repartitionAndSortWithinPartitions(partitioner)重新分區(qū)和排序

** Action算子**

在RDD上運(yùn)行計(jì)算,并返回結(jié)果給Driver或?qū)懭胛募到y(tǒng)

動作含義
reduce(func)通過func函數(shù)聚集RDD中的所有元素,這個(gè)功能必須是可交換且可并聯(lián)的
collect()在驅(qū)動程序中,以數(shù)組的形式返回?cái)?shù)據(jù)集的所有元素
count()返回RDD的元素個(gè)數(shù)
first()返回RDD的第一個(gè)元素(類似于take(1))
take(n)返回一個(gè)由數(shù)據(jù)集的前n個(gè)元素組成的數(shù)組
takeSample(withReplacement,num, [seed])返回一個(gè)數(shù)組,該數(shù)組由從數(shù)據(jù)集中隨機(jī)采樣的num個(gè)元素組成,可以選擇是否用隨機(jī)數(shù)替換不足的部分,seed用于指定隨機(jī)數(shù)生成器種子
takeOrdered(n, [ordering])takeOrdered和top類似,只不過以和top相反的順序返回元素
saveAsTextFile(path)將數(shù)據(jù)集的元素以textfile的形式保存到HDFS文件系統(tǒng)或者其他支持的文件系統(tǒng),對于每個(gè)元素,Spark將會調(diào)用toString方法,將它裝換為文件中的文本
saveAsSequenceFile(path)將數(shù)據(jù)集中的元素以Hadoop sequencefile的格式保存到指定的目錄下,可以使HDFS或者其他Hadoop支持的文件系統(tǒng)。
saveAsObjectFile(path)
countByKey()針對(K,V)類型的RDD,返回一個(gè)(K,Int)的map,表示每一個(gè)key對應(yīng)的元素個(gè)數(shù)。
foreach(func)在數(shù)據(jù)集的每一個(gè)元素上,運(yùn)行函數(shù)func進(jìn)行更新。

感謝各位的閱讀,以上就是“創(chuàng)建RDD的方式有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對創(chuàng)建RDD的方式有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

分享文章:創(chuàng)建RDD的方式有哪些-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://www.rwnh.cn/article22/cchhjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、做網(wǎng)站、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
仙桃市| 简阳市| 双牌县| 综艺| 安仁县| 昌都县| 稷山县| 平利县| 区。| 锦屏县| 驻马店市| 日喀则市| 盘山县| 化德县| 鄱阳县| 仙桃市| 饶平县| 祥云县| 定陶县| 盐亭县| 定结县| 灵川县| 玛多县| 思南县| 柘荣县| 本溪市| 西吉县| 鄄城县| 许昌市| 车致| 义乌市| 宁晋县| 塔城市| 宝山区| 绥德县| 北川| 大理市| 阳朔县| 鄄城县| 彭水| 邹城市|