999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于簡(jiǎn)化分布式模型與數(shù)據(jù)結(jié)構(gòu)理論的SPARK教學(xué)方法研究

2018-06-27 07:52:58胡建華
計(jì)算機(jī)教育 2018年6期
關(guān)鍵詞:理論語(yǔ)言模型

胡建華

(浙江農(nóng)林大學(xué)暨陽(yáng)學(xué)院 工程技術(shù)系, 浙江 諸暨 311800)

1 研究背景

云計(jì)算或大數(shù)據(jù)課程中,SPARK編程章節(jié)是學(xué)生反映較難掌握的內(nèi)容之一。SPARK是scala語(yǔ)言編寫(xiě)的,而scala語(yǔ)言同時(shí)支持面向?qū)ο笈c函數(shù)式編程的特性[1],特別是函數(shù)式編程特性,使得scala程序代碼非常精煉,編程效率非常高,然而,這恰恰成為困擾學(xué)生的問(wèn)題。大多數(shù)學(xué)生的先修課程是Java或者C++語(yǔ)言,這些語(yǔ)言都是面向?qū)ο蟮?因此學(xué)生對(duì)函數(shù)式編程很不適應(yīng),覺(jué)得代碼不好理解。筆者閱讀過(guò)很多SPARK編程教材,發(fā)現(xiàn)很少有教材從理論的高度對(duì)SPARK函數(shù)式編程進(jìn)行清晰的闡述,絕大部分教材是直接介紹scala的基礎(chǔ)語(yǔ)法,然后馬上學(xué)習(xí)SPARK的rdd編程,沒(méi)有解釋清楚函數(shù)式編程與面向?qū)ο缶幊叹烤褂泻尾煌PARK的rdd與Java集合是否有類比性等。由于缺乏與先期知識(shí)的類比性,學(xué)生覺(jué)得一下進(jìn)入了一個(gè)完全陌生的世界,造成學(xué)習(xí)上的困難與迷惑。在教學(xué)實(shí)踐中,筆者發(fā)現(xiàn)從數(shù)據(jù)結(jié)構(gòu)理論的角度介紹SPARK函數(shù)式編程特點(diǎn),以簡(jiǎn)化分布式模型描述SPARK框架組成,能幫助學(xué)生輕松掌握SPARK編程,取得較好的教學(xué)效果。

2 從數(shù)據(jù)結(jié)構(gòu)理論理解SPARK函數(shù)式編程

SPARK是scala語(yǔ)言編寫(xiě)的,而scala語(yǔ)言函數(shù)式編程的特性讓初學(xué)者感到很迷惑,學(xué)生經(jīng)常會(huì)有諸如以下問(wèn)題:函數(shù)既然是代碼,為何可以作為另一個(gè)函數(shù)的參數(shù)或者返回值;SPARK的rdd與Java集合有何不同;map與filter函數(shù)有何不同等。那么怎樣讓學(xué)生理解map、filter等高階函數(shù),以及它們是如何作用于rdd的?可以從數(shù)據(jù)結(jié)構(gòu)理論的角度闡述。第一步,回顧數(shù)據(jù)結(jié)構(gòu)課程的內(nèi)容。數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究非數(shù)值計(jì)算問(wèn)題中,數(shù)據(jù)的組織、存儲(chǔ)及操作的學(xué)科。非數(shù)值計(jì)算問(wèn)題是指不是一個(gè)公式就能解決的問(wèn)題,如排序問(wèn)題等。然后,講解數(shù)據(jù)的組織、存儲(chǔ)及操作的意思,見(jiàn)表1。

表1 數(shù)據(jù)結(jié)構(gòu)課程內(nèi)容

接著,最重要的是要讓學(xué)生理解:程序可以看做數(shù)據(jù)狀態(tài)轉(zhuǎn)換器,也可以理解為一個(gè)廣義函數(shù)。例如,要實(shí)現(xiàn)對(duì)全班成績(jī)按從高分到低分排序的任務(wù),可先輸入全班成績(jī),得到一個(gè)集合A,通過(guò)排序程序,就得到排好序的集合B,如圖1所示。

圖1 數(shù)據(jù)狀態(tài)轉(zhuǎn)換器示意圖

如果用數(shù)學(xué)形式表示,則可表示為B=f(A),排序程序其實(shí)就是實(shí)現(xiàn)函數(shù)關(guān)系f。現(xiàn)在可以理解SPARK的相關(guān)概念:rdd就是一個(gè)集合,不過(guò)它是分布式的,分布在集群的不同機(jī)器上。map函數(shù)只是一個(gè)顯式的映射關(guān)系名,表示要把一個(gè)集合中的元素映射到另一個(gè)集合,而映射規(guī)則是編寫(xiě)函數(shù)實(shí)現(xiàn)的,因此SPARK程序的業(yè)務(wù)邏輯就是編寫(xiě)函數(shù)并將其作為map等高階函數(shù)的參數(shù)來(lái)運(yùn)行的。

在函數(shù)式語(yǔ)言中,由于引入匿名函數(shù)及Lamda表達(dá)式,因此可以寫(xiě)出非常精煉的代碼。例如,要把集合A中所有元素加3,放到集合B中,一行代碼就可實(shí)現(xiàn):

map函數(shù)相當(dāng)于數(shù)學(xué)上的f,一個(gè)形式上的映射名,表示集合A要進(jìn)行一個(gè)映射,具體怎么映射,是由作為map函數(shù)的參數(shù)(也是一個(gè)函數(shù))實(shí)現(xiàn)的。從這個(gè)意義上理解,SPARK所謂的高階函數(shù),都是一個(gè)形式上的映射名而已。

既然都是形式上的映射名,那么map函數(shù)與filter函數(shù)有何不同呢?filter函數(shù)表示過(guò)濾映射,它的參數(shù)函數(shù)返回值必須是boolean型。例如,要把集合A中所有小于0的元素放到集合B中,可以這樣寫(xiě):

從數(shù)據(jù)結(jié)構(gòu)理論的角度,spark的rdd與Java集合是一個(gè)概念,都是一批數(shù)據(jù)構(gòu)成的集合。

3 從簡(jiǎn)化分布式模型理解rdd及SPARK工作原理

rdd(彈性分布式數(shù)據(jù)集)是SPARK編程的核心概念[2],在數(shù)據(jù)結(jié)構(gòu)理論上就是一個(gè)數(shù)據(jù)集合,不過(guò)是分布在多臺(tái)計(jì)算機(jī)上,每臺(tái)計(jì)算機(jī)可以并行操作本機(jī)上的數(shù)據(jù)集,這是一個(gè)典型的分布式系統(tǒng)。SPARK是怎樣管理分布在不同計(jì)算機(jī)上的數(shù)據(jù),以及怎樣通過(guò)程序處理這些數(shù)據(jù)呢?一個(gè)簡(jiǎn)化分布式模型框圖[3]如圖2所示。

圖2 spark工作原理

每個(gè)SPARK應(yīng)用程序都由一個(gè)任務(wù)控制節(jié)點(diǎn)(Driver Program)來(lái)控制,每個(gè)程序都要生成一個(gè)程序環(huán)境(SparkContext)。集群資源管理器(Cluster Manager)管理整個(gè)集群的資源,當(dāng)執(zhí)行程序前,Driver Program會(huì)向Cluster Manager要求分配計(jì)算機(jī)資源,稱為Worker Node,即運(yùn)行作業(yè)任務(wù)的工作節(jié)點(diǎn)。每個(gè)SPARK應(yīng)用程序稱為一個(gè)作業(yè)(Job),每個(gè)作業(yè)被分為一個(gè)個(gè)的任務(wù)(Task)。Driver Program得到工作節(jié)點(diǎn)后,就可以把任務(wù)分配給工作節(jié)點(diǎn)。每個(gè)工作節(jié)點(diǎn)上都有一個(gè)執(zhí)行器(Executor),負(fù)責(zé)執(zhí)行任務(wù)(即程序),執(zhí)行完成后,會(huì)報(bào)告給Driver Program。這樣所有的工作節(jié)點(diǎn)都可以并行執(zhí)行,并且由Driver Program統(tǒng)一管理。

rdd由SparkContext創(chuàng)建,分布在每個(gè)工作節(jié)點(diǎn)上。一般來(lái)說(shuō),rdd都是由hdfs文件產(chǎn)生,而hdfs文件是分布在工作節(jié)點(diǎn)上的[4],因此rdd基本上從本機(jī)數(shù)據(jù)文件生成,這樣可以避免大量數(shù)據(jù)在網(wǎng)絡(luò)上傳播,極大節(jié)約時(shí)間及網(wǎng)絡(luò)帶寬。對(duì)分布式編程中經(jīng)典的例程--統(tǒng)計(jì)文件中每個(gè)單詞出現(xiàn)的次數(shù),進(jìn)行分析。

4 結(jié) 語(yǔ)

通過(guò)數(shù)據(jù)結(jié)構(gòu)理論理解函數(shù)式編程思想,用簡(jiǎn)化內(nèi)存模型分析SPARK系統(tǒng)框架,然后通過(guò)程序?qū)嵗馕鯯PARK代碼,這樣能幫助學(xué)生輕松掌握SPARK編程,顯著提高教學(xué)效果。我系2014級(jí)學(xué)生按此方法教學(xué),該門(mén)課程平均成績(jī)達(dá)到80分,而前一屆學(xué)生未采用這種講課方法,同樣試卷考試,該門(mén)課程平均成績(jī)只有65分。由此可見(jiàn),人們對(duì)知識(shí)的理解是有類比性的,通過(guò)已有的知識(shí)類比理解新的知識(shí),接受新知識(shí)就很快。本文的教學(xué)方法,其實(shí)就是通過(guò)學(xué)生已掌握的數(shù)據(jù)結(jié)構(gòu)知識(shí)、數(shù)學(xué)函數(shù)知識(shí)以及分布式模型知識(shí),類比SPARK函數(shù)式編程,從而讓學(xué)生輕松理解新知識(shí)并記憶深刻。

[1]黎文陽(yáng). 大數(shù)據(jù)處理模型Apache Spark研究[J]. 現(xiàn)代計(jì)算機(jī)(專業(yè)版), 2015(8): 55-60.

[2]胡俊, 胡賢德, 程家興. 基于Spark的大數(shù)據(jù)混合計(jì)算模型[J].計(jì)算機(jī)系統(tǒng)應(yīng)用, 2015(4): 214-218.

[3]陳虹君. 基于Hadoop平臺(tái)的Spark框架研究[J]. 電腦知識(shí)與技術(shù), 2014(35): 8407-8408.

[4]夏靖波, 韋澤鯤, 付凱, 等. 云計(jì)算中Hadoop技術(shù)研究與應(yīng)用綜述[J]. 計(jì)算機(jī)科學(xué), 2016(11): 6-10.

猜你喜歡
理論語(yǔ)言模型
一半模型
堅(jiān)持理論創(chuàng)新
神秘的混沌理論
理論創(chuàng)新 引領(lǐng)百年
相關(guān)于撓理論的Baer模
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
語(yǔ)言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語(yǔ)言描寫(xiě)搖曳多姿
累積動(dòng)態(tài)分析下的同聲傳譯語(yǔ)言壓縮
主站蜘蛛池模板: 亚洲一区二区三区香蕉| 制服丝袜无码每日更新| 高清不卡一区二区三区香蕉| 久久精品最新免费国产成人| 久久久久国产精品免费免费不卡| aⅴ免费在线观看| 手机成人午夜在线视频| 亚洲中文字幕无码爆乳| 国产精品欧美日本韩免费一区二区三区不卡 | 四虎亚洲国产成人久久精品| www.91中文字幕| 国产高清免费午夜在线视频| 国产爽妇精品| 91美女视频在线| 91久久夜色精品| 国产精品吹潮在线观看中文| 国产乱人伦偷精品视频AAA| 亚洲精品国产综合99| 亚洲天堂网2014| 毛片久久久| 伊人久久青草青青综合| 无码专区在线观看| 亚洲国产日韩欧美在线| 精品久久国产综合精麻豆| 精品天海翼一区二区| 国产成人免费观看在线视频| 国产成人高清精品免费| 色首页AV在线| 国产精品美乳| 久久综合成人| 久久黄色免费电影| 色噜噜久久| 又黄又湿又爽的视频| 日本久久久久久免费网络| 91精品国产福利| 国产9191精品免费观看| 亚洲三级成人| 午夜少妇精品视频小电影| 久久久久久久蜜桃| 国产免费自拍视频| 婷婷午夜影院| 国产麻豆aⅴ精品无码| 国产粉嫩粉嫩的18在线播放91| 日韩在线永久免费播放| 99在线观看国产| 亚洲天堂网视频| 国产在线精品网址你懂的| 国产精品毛片在线直播完整版| 亚亚洲乱码一二三四区| 最新国产高清在线| 亚洲精品高清视频| 亚洲欧美一区二区三区蜜芽| 欧美中文字幕一区| 欧美在线精品一区二区三区| 国产成人亚洲欧美激情| 欧美亚洲网| 国产特级毛片| 亚洲一区二区成人| 成人免费网站久久久| www.91在线播放| 一级一毛片a级毛片| 亚洲中久无码永久在线观看软件| 亚洲欧洲日韩综合| 日本高清视频在线www色| 色香蕉网站| 狠狠综合久久| 91在线激情在线观看| 国产永久在线视频| 88国产经典欧美一区二区三区| 最新精品久久精品| 永久在线播放| 日韩欧美亚洲国产成人综合| 一级福利视频| 色成人综合| 亚洲人成高清| 无码一区二区波多野结衣播放搜索| yy6080理论大片一级久久| 在线一级毛片| 国产精品蜜芽在线观看| 99热国产这里只有精品无卡顿"| 激情综合网激情综合| 久久国产高清视频|