spark
--------- rdd算子學(xué)習(xí) ---------
轉(zhuǎn)換算子: 返回值還是一個(gè)rdd就是轉(zhuǎn)換
是懶加載的算子,沒有動(dòng)作算子不執(zhí)行
第一個(gè)算子 MAP 解釋:一個(gè)參數(shù)傳入和一個(gè)必須給的返回值,對每一個(gè)數(shù)字進(jìn)行計(jì)算
第二個(gè)算子 FLATMAP 解釋:先map再解除嵌套功能,參數(shù)跟map是一樣的
第三個(gè)算子 reduceByKey 解釋:兩個(gè)參數(shù)一個(gè)返回值,類型一致,按照key分組,按照value聚合(怎么聚合都行)疊加聚合
#傳入的參數(shù)只針對聚合的處理的
第四個(gè)算子 mapValues 解釋:只操作value的map算子
第五個(gè)算子 groupby 解釋:跟sql關(guān)鍵字一樣,將rdd進(jìn)行分組,一個(gè)傳入一個(gè)返回,不限制類型
傳遞參數(shù)是跟那個(gè)值進(jìn)行分組
第六個(gè)算子 filter 解釋:過濾算子 ,一個(gè)傳入?yún)?shù),返回布爾型,對保留錯(cuò)不留
第七個(gè)算子 distinct 解釋:按照幾個(gè)分區(qū)去去重復(fù),按照無參數(shù)去處理 ,順序不保證可能需要排序算子
第七個(gè)算子 union 解釋:把兩個(gè)rdd合并成一個(gè)rdd算子,傳入另外一個(gè)rdd算子,不去重
第八個(gè)算子 join 解釋:只能用在k,v行的數(shù)據(jù),只能用在兩個(gè)二元元祖,只按照key關(guān)聯(lián)
第九個(gè)算子 intersection 解釋:判斷兩個(gè)數(shù)據(jù)是否有交集,把交集取出返回新rdd
第十個(gè)算子 glom 解釋:查看分區(qū)的分布,可以看到數(shù)據(jù)在那個(gè)分區(qū),返回一個(gè)list
第十一個(gè)算子 groupBykey 解釋:要求必須十k,v類型,自動(dòng)按照key分組,直接調(diào)用沒有傳入?yún)?shù)
第十二個(gè)算子 sortBy 解釋:根據(jù)指定函數(shù)排序,傳遞一個(gè)返回一個(gè)。三個(gè)參,最后一個(gè)多少個(gè)分區(qū)進(jìn)行排序
第十三個(gè)算子 sortByKey 解釋:只是針對k,v類型的數(shù)據(jù),只是針對key的,最后一個(gè)參數(shù)對key進(jìn)行修改
Action算子收集算子:
第十四個(gè)算子 countByKey 解釋:統(tǒng)計(jì)key出現(xiàn)次數(shù),適用kv型的rdd
第十五個(gè)算子 collect 解釋:收集所有數(shù)據(jù)到Driver中,收集所有結(jié)果集,結(jié)果集不會太大,如果太大不好弄了
第十六個(gè)算子 reduce 解釋:對rdd數(shù)據(jù)集按照傳入邏輯進(jìn)行聚合,(T,T)-》T
第十七個(gè)算子 fold 解釋:帶有聚合初始值的reduce print(rdd.fold(10,lambda a, b: a + b)) 105,分區(qū)間聚合,分區(qū)內(nèi)聚合
第十八個(gè)算子 first() 解釋:拿到第一個(gè)元素
第十九個(gè)算子 take(5) 解釋:拿到第五個(gè)元素
第二十個(gè)算子 top(5) 解釋:降序排序前幾個(gè)
第二十一個(gè)算子 count() 解釋:計(jì)算rdd有多少數(shù)據(jù)
第二十二個(gè)算子 takeSample() 解釋:隨機(jī)抽樣算子,參數(shù)1:是否重復(fù),參數(shù)2:采幾個(gè),參數(shù)3:隨機(jī)數(shù)種子一般不用傳遞
第二十三個(gè)算子 takeOrdered() 解釋:排序取前n個(gè)
**********************性能比較好的函數(shù)********************
第二十四個(gè)算子 *foreach() 解釋:沒有返回值的map方法 fun(T)-> null,
***很重要的一點(diǎn)****
在分區(qū)內(nèi)執(zhí)行,但是沒有返回值,不會把數(shù)據(jù)發(fā)送到DIRVER
效率特別高,不用對dirver回報(bào)結(jié)果
例子:鏈接mysql數(shù)據(jù)庫,可以每一個(gè)talk并行插入
第二十五個(gè)算子 saveAsTextFile 解釋:寫出文件也是分區(qū)直接執(zhí)行跳過DIRVER
第二十六個(gè)算子 mapPartitions 解釋:分區(qū)計(jì)算代碼,一次io整體過去了,跟map過程比較優(yōu)秀的算子
接受一個(gè)參數(shù)一個(gè)返回值,傳遞迭代器對象,兩個(gè)list