溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spark的transformation和action算子簡(jiǎn)介

發(fā)布時(shí)間:2020-06-25 14:35:11 來源:網(wǎng)絡(luò) 閱讀:639 作者:興趣e族 欄目:大數(shù)據(jù)

transformation算子

map(func)

返回一個(gè)新的分布式數(shù)據(jù)集,由每個(gè)原元素經(jīng)過func函數(shù)處理后的新元素組成

filter(func)

返回一個(gè)新的數(shù)據(jù)集,由經(jīng)過func函數(shù)處理后返回值為true的原元素組成

flatMap(func)

類似于map,但是每一個(gè)輸入元素,會(huì)被映射為0個(gè)或多個(gè)輸出元素,(因此,func函數(shù)的返回值是一個(gè)seq,而不是單一元素)

mapPartitions(func)

類似于map,對(duì)RDD的每個(gè)分區(qū)起作用,在類型為T的RDD上運(yùn)行時(shí),func的函數(shù)類型必須是Iterator[T]=>Iterator[U]

sample(withReplacement,fraction,seed)

根據(jù)給定的隨機(jī)種子seed,隨機(jī)抽樣出數(shù)量為fraction的數(shù)據(jù)

pipe(command,[envVars])

通過管道的方式對(duì)RDD的每個(gè)分區(qū)使用shell命令進(jìn)行操作,返回對(duì)應(yīng)的結(jié)果

union(otherDataSet)

返回一個(gè)新的數(shù)據(jù)集,由原數(shù)據(jù)集合參數(shù)聯(lián)合而成

intersection(otherDataset)

求兩個(gè)RDD的交集

distinct([numtasks])

返回一個(gè)包含源數(shù)據(jù)集中所有不重復(fù)元素的i新數(shù)據(jù)集

groupByKey([numtasks])

在一個(gè)由(K,v)對(duì)組成的數(shù)據(jù)集上調(diào)用,返回一個(gè)(K,Seq[V])對(duì)組成的數(shù)據(jù)集。默認(rèn)情況下,輸出結(jié)果的并行度依賴于父RDD的分區(qū)數(shù)目,如果想要對(duì)key進(jìn)行聚合的話,使用reduceByKey或者combineByKey會(huì)有更好的性能

reduceByKey(func,[numTasks])

在一個(gè)(K,V)對(duì)的數(shù)據(jù)集上使用,返回一個(gè)(K,V)對(duì)的數(shù)據(jù)集,key相同的值,都被使用指定的reduce函數(shù)聚合到一起,reduce任務(wù)的個(gè)數(shù)是可以通過第二個(gè)可選參數(shù)來配置的

sortByKey([ascending],[numTasks])

在類型為(K,V)的數(shù)據(jù)集上調(diào)用,返回以K為鍵進(jìn)行排序的(K,V)對(duì)數(shù)據(jù)集,升序或者降序有boolean型的ascending參數(shù)決定

join(otherDataset,[numTasks])

在類型為(K,V)和(K,W)類型的數(shù)據(jù)集上調(diào)用,返回一個(gè)(K,(V,W))對(duì),每個(gè)key中的所有元素都在一起的數(shù)據(jù)集

cogroup(otherDataset,[numTasks])

在類型為(K,V)和(K,W)類型的數(shù)據(jù)集上調(diào)用,返回一個(gè)數(shù)據(jù)集,組成元素為(K,Iterable[V],Iterable[W]) tuples

cartesian(otherDataset)

笛卡爾積,但在數(shù)據(jù)集T和U上調(diào)用時(shí),返回一個(gè)(T,U)對(duì)的數(shù)據(jù)集,所有元素交互進(jìn)行笛卡爾積

coalesce(numPartitions)

對(duì)RDD中的分區(qū)減少指定的數(shù)目,通常在過濾完一個(gè)大的數(shù)據(jù)集之后進(jìn)行此操作

repartition(numpartitions)

將RDD中所有records平均劃分到numparitions個(gè)partition中


action算子

reduce(func)

通過函數(shù)func聚集數(shù)據(jù)集中的所有元素,這個(gè)函數(shù)必須是關(guān)聯(lián)性的,確保可以被正確的并發(fā)執(zhí)行

collect()

在driver的程序中,以數(shù)組的形式,返回?cái)?shù)據(jù)集的所有元素,這通常會(huì)在使用filter或者其它操作后,返回一個(gè)足夠小的數(shù)據(jù)子集再使用

count()

返回?cái)?shù)據(jù)集的元素個(gè)數(shù)

first()

返回?cái)?shù)據(jù)集的第一個(gè)元素(類似于take(1))

take(n)

返回一個(gè)數(shù)組,由數(shù)據(jù)集的前n個(gè)元素組成。注意此操作目前并非并行執(zhí)行的,而是driver程序所在機(jī)器

takeSample(withReplacement,num,seed)

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

saveAsTextFile(path)

將數(shù)據(jù)集的元素,以textfile的形式保存到本地文件系統(tǒng)hdfs或者任何其他Hadoop支持的文件系統(tǒng),spark將會(huì)調(diào)用每個(gè)元素的toString方法,并將它轉(zhuǎn)換為文件中的一行文本

takeOrderd(n,[ordering])

排序后的limit(n)

saveAsSequenceFile(path)

將數(shù)據(jù)集的元素,以sequencefile的格式保存到指定的目錄下,本地系統(tǒng),hdfs或者任何其他hadoop支持的文件系統(tǒng),RDD的元素必須由key-value對(duì)組成。并都實(shí)現(xiàn)了hadoop的writable接口或隱式可以轉(zhuǎn)換為writable

saveAsObjectFile(path)

使用Java的序列化方法保存到本地文件,可以被sparkContext.objectFile()加載
countByKey()
對(duì)(K,V)類型的RDD有效,返回一個(gè)(K,Int)對(duì)的map,表示每一個(gè)可以對(duì)應(yīng)的元素個(gè)數(shù)

foreach(func)

在數(shù)據(jù)集的每一個(gè)元素上,運(yùn)行函數(shù)func,t通常用于更新一個(gè)累加器變量,或者和外部存儲(chǔ)系統(tǒng)做交互

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI