400-650-7353
您所在的位置:首頁(yè) > IT干貨資料 > 大數(shù)據(jù) > 【大數(shù)據(jù)基礎(chǔ)知識(shí)】Spark算子介紹及map算子的使用

【大數(shù)據(jù)基礎(chǔ)知識(shí)】Spark算子介紹及map算子的使用

  • 發(fā)布: 大數(shù)據(jù)培訓(xùn)
  • 來(lái)源:大數(shù)據(jù)干貨資料
  • 2021-07-07 18:48:01
  • 閱讀()
  • 分享
  • 手機(jī)端入口

進(jìn)入到大數(shù)據(jù)圈的朋友們都對(duì)Spark的強(qiáng)大功能有所了解,那么提到Spark,我們就想到了其中的算子,Spark的強(qiáng)大功能如何實(shí)現(xiàn),自然離不開(kāi)其中的算子了。怎么理解這些算子呢,我們可以簡(jiǎn)單把它理解為方法或函數(shù),Spark已經(jīng)定義好了很多功能強(qiáng)大的方法或函數(shù),在這里稱為算子。

Spark中的算子分為兩類:一是轉(zhuǎn)換類算子(Transformation),二是行動(dòng)類算子(Action)。轉(zhuǎn)換類算子執(zhí)行后得到新的RDD,并且不會(huì)立即執(zhí)行,需要有行動(dòng)類算子觸發(fā)才能執(zhí)行。行動(dòng)類算子是立即執(zhí)行的,并且執(zhí)行后得到的不再是RDD。

這次,我們用命令行的方式先來(lái)看看這些算子如何使用。

首先,我們進(jìn)入spark-shell命令行方式:

[root@node2 ~]# spark-shell --master spark://node1:7077

執(zhí)行上面命令后,就進(jìn)入了命令行方式:

此時(shí),我們就可以測(cè)試使用Spark中的算子了。

有一點(diǎn)我們要注意的 ,這些算子都是作用在RDD上,所以我們首先要得到RDD。

map算子

map算子實(shí)現(xiàn)的是一一映射。

對(duì)某一個(gè)rdd執(zhí)行map,rdd中每一條數(shù)據(jù)都會(huì)執(zhí)行操作。也就是說(shuō)rdd中有幾條數(shù)據(jù),就會(huì)被迭代幾次。

執(zhí)行map算子后返回值的數(shù)據(jù)類型,取決于給map傳遞的函數(shù)的返回值類型。

scala> val rdd=sc.makeRDD(List(1,2,3,4,5,6,7),3)

rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[3] at makeRDD at :24

首先,我們通過(guò)makeRDD,將一個(gè)list轉(zhuǎn)換成RDD,并且指定分區(qū)數(shù)為3。

scala> val rdd1=rdd.map(_>5)

rdd1: org.apache.spark.rdd.RDD[Boolean] = MapPartitionsRDD[4] at map at :26

執(zhí)行map算子,傳遞的函數(shù)是判斷元素是否大于5,結(jié)果得到一個(gè)新的的RDD,并且元素類型是Boolean類型。由此我們也可以看到,結(jié)果RDD的元素類型就是由傳入map算子的函數(shù)決定的。

此時(shí),實(shí)際上還沒(méi)有真正執(zhí)行,我們需要使用一個(gè)Action算子觸發(fā)執(zhí)行。

scala> rdd1.collect

[Stage 0:===================> res0: Array[Boolean] = Array(false, false, false, false, false, true, true)

我們使用collect算子觸發(fā)執(zhí)行,得到結(jié)果。Collect算子是Action類算子,是將結(jié)果回收到客戶端。在生產(chǎn)環(huán)境中,要慎用此算子。我們測(cè)試中因?yàn)閿?shù)據(jù)量非常小,用此算子是沒(méi)有問(wèn)題的。

文章“【大數(shù)據(jù)基礎(chǔ)知識(shí)】Spark算子介紹及map算子的使用”已幫助

>>本文地址:http://hqfphsz.com/zhuanye/2021/69184.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個(gè)方向的工作?

獲取測(cè)試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營(yíng)銷互聯(lián)網(wǎng)營(yíng)銷
  • JavaJava
  • Linux云計(jì)算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運(yùn)營(yíng)全域電商運(yùn)營(yíng)
  • 軟件測(cè)試軟件測(cè)試
  • 室內(nèi)設(shè)計(jì)室內(nèi)設(shè)計(jì)
  • 平面設(shè)計(jì)平面設(shè)計(jì)
  • 電商設(shè)計(jì)電商設(shè)計(jì)
  • 網(wǎng)頁(yè)設(shè)計(jì)網(wǎng)頁(yè)設(shè)計(jì)
  • 全鏈路UI/UE設(shè)計(jì)UI設(shè)計(jì)
  • VR/AR游戲開(kāi)發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運(yùn)營(yíng)新媒體
  • 直播帶貨直播帶貨
  • 智能機(jī)器人軟件開(kāi)發(fā)智能機(jī)器人
 

快速通道fast track

近期開(kāi)班時(shí)間TIME