Spark大數(shù)據(jù)分析 課件 第3章 Spark程序入門_第1頁
Spark大數(shù)據(jù)分析 課件 第3章 Spark程序入門_第2頁
Spark大數(shù)據(jù)分析 課件 第3章 Spark程序入門_第3頁
Spark大數(shù)據(jù)分析 課件 第3章 Spark程序入門_第4頁
Spark大數(shù)據(jù)分析 課件 第3章 Spark程序入門_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Scala簡(jiǎn)介目錄/Contents01

Scala簡(jiǎn)介Scala簡(jiǎn)介01Scala簡(jiǎn)介Scala是一門多范式的編程語言,一種類似java的編程語言,設(shè)計(jì)初衷是實(shí)現(xiàn)可伸縮的語言、并集成面象對(duì)象編程的各種特性。Scala將面向?qū)ο蠛秃瘮?shù)式編程結(jié)合成一種簡(jiǎn)潔的高級(jí)語言。Scala的靜態(tài)類型有助于避免復(fù)雜應(yīng)用程序中的錯(cuò)誤,它的JVM和JavaScript運(yùn)行時(shí)讓你可以輕松地訪問龐大的庫生態(tài)系統(tǒng)來構(gòu)建高性能系統(tǒng)。Scala簡(jiǎn)介Scala是一門以Java虛擬機(jī)(JVM)為運(yùn)行環(huán)境并將面向?qū)ο蠛秃瘮?shù)式編程的最佳特性結(jié)合在一起的靜態(tài)類型編程語言(靜態(tài)語言需要提前編譯的如:Java、c、c++等,動(dòng)態(tài)語言如:js)。Scala特點(diǎn)如下:1、Scala是一門多范式的編程語言,Scala支持面向?qū)ο蠛秃瘮?shù)式編程。(多范式,就是多種編程方法的意思。有面向過程、面向?qū)ο蟆⒎盒?、函?shù)式四種程序設(shè)計(jì)方法。)2、Scala源代碼(.scala)會(huì)被編譯成Tava字節(jié)碼(.class),然后運(yùn)行于JVM之上,并可以調(diào)用現(xiàn)有的Java類庫,實(shí)現(xiàn)兩種語言的無縫對(duì)接。3、Scala單作為一門語言來看,非常的簡(jiǎn)潔高效。感謝大家的聆聽Scala環(huán)境準(zhǔn)備目錄/Contents01

Windows下Scala安裝02

IDEA安裝Scala

Windows下Scala安裝01

Windows下Scala安裝在Scala官網(wǎng)(/)單擊DOWNLOAD進(jìn)入下載頁面,目前最新的版本是2.13.1,考慮到版本的穩(wěn)定性和兼容性,本書選擇的是2.12.8(/download/2.12.8.html)

Windows下Scala安裝下載成功后解壓安裝包,并配置Scala的環(huán)境變量

Windows下Scala安裝環(huán)境變量配置完成后測(cè)試是否安裝成功。進(jìn)入Windows命令行界面,輸入scala然后回車IDEA安裝Scala02IDEA安裝Scala目前主流的開發(fā)工具有Eclipse和IDEA兩種,在這兩個(gè)開發(fā)工具中可以安裝對(duì)應(yīng)的Scala插件來進(jìn)行Scala開發(fā)。現(xiàn)在大多數(shù)Scala開發(fā)程序員都會(huì)選擇IDEA作為開發(fā)Scala的工具。本書以Windows操作系統(tǒng)為例,講解如何在IDEA中下載安裝Scala插件。

Windows下Scala安裝(1)首先下載IDEA工具(/idea/download/other.html),本書選擇的版本是2018.2.5,然后打開安裝包進(jìn)行安裝,具體的安裝步驟這里不做詳解。(2)打開IDEA安裝Scala插件。本書選擇的版本是2018.2.11(scala-intellij-bin-2018.2.11.zip),Scala的插件分為在線安裝與離線安裝,但是在線安裝很慢,所以建議下載后離線安裝。打開IDEA后點(diǎn)擊【File】下拉按鈕,然后選擇【Settings】,在彈出的對(duì)話框中點(diǎn)擊【Plugins】,然后點(diǎn)擊【InstallJetBrainsplugin】,在搜索框中輸入scala,點(diǎn)擊Scala,在對(duì)話框右邊出現(xiàn)該Intellij對(duì)應(yīng)的Scala版本,從圖中看到對(duì)應(yīng)的Scala版本是2018/9/5更新的。

Windows下Scala安裝在/plugin/1347-scala/versions找到Scala對(duì)應(yīng)的版本,然后下載即可。

Windows下Scala安裝插件下載完成后點(diǎn)擊【Installpluginfromdisk】按鈕,選擇Scala插件所在的路徑,然后單擊ok。

Windows下Scala安裝插件安裝完成后需要重啟IDEA,Scala插件才會(huì)生效,單擊【Restart】重啟IDEA。感謝大家的聆聽Scala基礎(chǔ)語法目錄/Contents01

Scala數(shù)據(jù)類型02Scala變量03方法與函數(shù)Scala數(shù)據(jù)類型01Scala數(shù)據(jù)類型Scala中沒有基本數(shù)據(jù)類型的概念,所有的類型都是對(duì)象。Scala的數(shù)據(jù)類型和Java是類似的,所有Java的基本類型在scala包中都有對(duì)應(yīng)的類,將Scala代碼編譯為Java字節(jié)碼時(shí),Scala編譯器將盡可能使用Java的基本類型,從而提供基本類型的性能優(yōu)勢(shì)。Scala數(shù)據(jù)類型

AnyVal:所有值類型的父類型。包含Byte、Short、Int、Long、Float、Double、Char、Boolean、Unit。其中Unit類型用來標(biāo)識(shí)過程,也就是沒有明確返回值的函數(shù)。由此可見,Unit類似于Java里的void。Unit只有一個(gè)實(shí)例,(),這個(gè)實(shí)例也沒有實(shí)質(zhì)的意義。

AnyRef:Scala里所有引用類(referenceclass)的基類。與其他語言稍微有點(diǎn)不同的是,Scala還定義了底類型,分別是Nothing、Null。

Nothing:在Scala的類層級(jí)的最低端;它是任何其他類型的子類型,可以賦值給任何其他類型,用于異常,表明不正常的返回。

Null:所有引用類型的子類型,而Nothing是所有類型的子類型。Null類只有一個(gè)實(shí)例對(duì)象,null,類似于Java中的null引用。null可以賦值給任意引用類型,但是不能賦值給值類型。Scala變量02Scala變量Scala有兩種變量,val和var。val類似于Java里的final變量。一旦初始化了,val就不能再被賦值。相反,var如同Java里面的非final變量,可以在它的生命周期中被多次賦值。即,常量或變量。變量:在程序運(yùn)行過程中其值可能發(fā)生改變的量叫做變量。如:時(shí)間,年齡。常量:在程序運(yùn)行過程中其值不會(huì)發(fā)生變化的量叫做常量。如:數(shù)值3,字符'A'。Scala變量在Scala中,聲明變量使用關(guān)鍵詞“var”,實(shí)例如下:varmyVar:String="Foo"varmyVar:String="Too"在這里,myVar使用關(guān)鍵字var聲明。這意味著它是一個(gè)可以改變值的變量,被稱為可變變量。下面是使用val關(guān)鍵字來定義變量的語法:valmyVal:String="Foo"這里,myVal是使用關(guān)鍵字val聲明。這意味著,它是不能改變的變量,這是不可變變量。1.變量聲明Scala變量2.變量類型引用在Scala中聲明變量和常量不一定要指明數(shù)據(jù)類型,在沒有指明數(shù)據(jù)類型的情況下,其數(shù)據(jù)類型是通過變量或常量的初始值推斷出來的。所以,如果在沒有指明數(shù)據(jù)類型的情況下聲明變量或常量必須要給出其初始值,否則將會(huì)報(bào)錯(cuò)。如下面的實(shí)例所示,myVar會(huì)被推斷為Int類型,myVal會(huì)被推斷為String類型。varmyVar=10valmyVal="Hello,Scala!"

方法與函數(shù)03Scala有方法與函數(shù),二者在語義上的區(qū)別很小。Scala中的方法跟Java的類似,方法是組成類的一部分,而函數(shù)是一個(gè)對(duì)象可以賦值給一個(gè)變量。換句話來說在類中定義的函數(shù)即是方法。Scala中使用val語句可以定義函數(shù),def語句定義方法。方法與函數(shù)方法與函數(shù)1.方法Scala方法聲明格式如下:deffunctionName([參數(shù)列表]):[returntype]如果你不寫等于號(hào)和方法主體,那么方法會(huì)被隱式聲明為抽象(abstract),包含它的類型于是也是一個(gè)抽象類型。Scala方法定義格式如下:deffunctionName([參數(shù)列表]):[returntype]={functionbodyreturn[expr]}方法定義由一個(gè)def關(guān)鍵字開始,緊接著是可選的參數(shù)列表,一個(gè)冒號(hào):和方法的返回類型,一個(gè)等于號(hào)=,最后是方法的主體。以上代碼中returntype可以是任意合法的Scala數(shù)據(jù)類型。參數(shù)列表中的參數(shù)可以使用逗號(hào)分隔。如果方法沒有返回值,可以返回為Unit,這個(gè)類似于Java的void。2.函數(shù)在Scala中,由于使用def語句定義以及調(diào)用函數(shù)的格式均與方法一樣,因此,這里不做贅述。然而,Scala函數(shù)與Scala方法也是有區(qū)別的。具體如下:(1) 函數(shù)可作為一個(gè)參數(shù)傳入到方法中,而方法不行。(2) 在Scala中無法直接操作方法,如果要操作方法,必須先將其轉(zhuǎn)換成函數(shù)。(3) 函數(shù)必須要有參數(shù)列表,而方法可以沒有參數(shù)列表valfunctionName([參數(shù)列表]):[returntype]={functionbodyreturn[expr]}方法與函數(shù)方法與函數(shù)3.方法轉(zhuǎn)函數(shù)方法轉(zhuǎn)函數(shù)的格式如下:valf1=m1_在上面的格式中,方法名后面有一個(gè)空格和一個(gè)下劃線。神奇的下劃線將m1這個(gè)方法變成了函數(shù),而方法名與下劃線之間至少有一個(gè)空格,沒有會(huì)報(bào)錯(cuò)。感謝大家的聆聽Scala面向?qū)ο竽夸?Contents01類和對(duì)象02繼承03單例對(duì)象和伴生對(duì)象類和對(duì)象01類和對(duì)象

類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。類是抽象的,不占用內(nèi)存,而對(duì)象是具體的,占用存儲(chǔ)空間。類是用于創(chuàng)建對(duì)象的藍(lán)圖,它是一個(gè)定義包括在特定類型的對(duì)象中的方法和變量的軟件模板。繼承02繼承Scala繼承一個(gè)基類跟Java很相似,但我們需要注意以下幾點(diǎn):重寫一個(gè)非抽象方法必須使用override修飾符。只有主構(gòu)造函數(shù)才可以往基類的構(gòu)造函數(shù)里寫參數(shù)。在子類中重寫超類的抽象方法時(shí),你不需要使用override關(guān)鍵字。單例對(duì)象和伴生對(duì)象03單例對(duì)象和伴生對(duì)象在Scala中,是沒有static這個(gè)東西的,所以不能像Java一樣直接用類名就可以訪問類中的方法和字段。但是它也為我們提供了單例模式的實(shí)現(xiàn)方法,那就是使用關(guān)鍵字object,使用關(guān)鍵字object創(chuàng)建對(duì)象就是單例對(duì)象。感謝大家的聆聽Scala基本數(shù)據(jù)結(jié)構(gòu)目錄/Contents01數(shù)組02

元祖03集合

數(shù)組01

數(shù)組Scala提供了一種數(shù)據(jù)結(jié)構(gòu)叫作數(shù)組,數(shù)組是一種存儲(chǔ)了相同類型元素的固定大小順序集合。數(shù)組用于存儲(chǔ)數(shù)據(jù)集合,但將數(shù)組視為相同類型變量的集合通常更為有用??梢月暶饕粋€(gè)數(shù)組變量,例如:numbers,使用numbers[0],numbers[1]和...,numbers[99]來表示單個(gè)變量,而不是分別地聲明每個(gè)變量,例如number0,number1,...等變量。本教程介紹如何使用索引變量聲明數(shù)組變量,創(chuàng)建數(shù)組和使用數(shù)組。數(shù)組的第一個(gè)元素的索引是數(shù)字0,最后一個(gè)元素的索引是元素的總數(shù)減去1。

數(shù)組1.?dāng)?shù)組的定義和使用在scala中數(shù)組有兩種:定長(zhǎng)數(shù)組和變長(zhǎng)數(shù)組。定長(zhǎng)數(shù)組:由于Array是不可變的,初始化就有了固定的長(zhǎng)度,所以不能直接對(duì)其元素進(jìn)行刪除操作,也不能多增加元素,只能修改某個(gè)位置的元素值,要實(shí)現(xiàn)刪除可以通過過濾生成新的數(shù)組。所以也就沒有:add,insert,remove等操作。變長(zhǎng)數(shù)組:ArrayBuffer是可變的,本身提供了很多元素的操作,當(dāng)然包括增加,刪除操作。

數(shù)組2.?dāng)?shù)組的遍歷與Java一樣,如果想要獲取數(shù)組中的每一個(gè)元素,需要將數(shù)組進(jìn)行遍歷操作。數(shù)組的遍歷分為for循環(huán)遍歷、while循環(huán)遍歷、do...while循環(huán)遍歷。下面是用for循環(huán)對(duì)數(shù)組進(jìn)行遍歷。元祖02元祖元組也是可以理解為一個(gè)容器,可以存放各種相同或不同類型的數(shù)據(jù)。說的簡(jiǎn)單點(diǎn),就是將多個(gè)無關(guān)的數(shù)據(jù)封裝為一個(gè)整體,稱為元組。與列表一樣,元祖也是不可變的,但與列表不同的是元祖可以包含不同類型的元素,元祖的值是通過將不同的值包含在圓括號(hào)中構(gòu)成的。1.元祖的創(chuàng)建2.訪問元祖中的元素訪問元祖的元素可以通過數(shù)字索引,我們可以使用t._1訪問第一個(gè)元素,使用t._2訪問第二個(gè)元素,依次類推。3.元素交換當(dāng)元組中的元素為兩個(gè)時(shí),可以通過Tuple.swap方法進(jìn)行元素交換,生成新的元祖。原先的元祖不會(huì)被改變。集合03

集合(1)Scala的集合有三大類:序列Seq、集Set、映射Map,所有的集合都擴(kuò)展自Iterable特質(zhì)。(2)對(duì)于幾乎所有的集合類,Scala都同時(shí)提供了可變和不可變的版本,分別位于以下兩個(gè)包:不可變集合:scala.collection.immutable可變集合:scala.collection.mutable(3)Scala不可變集合,就是指該集合對(duì)象不可修改,每次修改就會(huì)返回一個(gè)新對(duì)象,而不會(huì)對(duì)原對(duì)象進(jìn)行修改。類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論