国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2)

這篇具有很好參考價(jià)值的文章主要介紹了Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

章節(jié)概要

Spark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎,它是由Scala語言開發(fā)實(shí)現(xiàn)的,關(guān)于大數(shù)據(jù)技術(shù),本身就是計(jì)算數(shù)據(jù),而Scala既有面向?qū)ο蠼M織項(xiàng)目工程的能力,又具備計(jì)算數(shù)據(jù)的功能,同時(shí)Spark和Scala的緊密集成,本書將采用Scala語言開發(fā)Spark程序,所以學(xué)好Scala將有助于我們更好的掌握Spark框架。

1.2 Scala的基礎(chǔ)語法

1.2.1 聲明值和變量

Scala有兩種類型的變量,一種是使用關(guān)鍵字var聲明的變量,值是可變的;另一種是使用關(guān)鍵字val聲明的變量,也叫常量,值是不可變的。

  • 使用關(guān)鍵字var聲明的變量
var myVar:String="Hello" 
  • 使用關(guān)鍵字val聲明的變量
val age:Int=10

有以下幾個(gè)事項(xiàng)需要注意:

  1. Scala中的變量在聲明時(shí)必須進(jìn)行初始化。
  2. 使用var聲明的變量可以在初始化后再次對變量進(jìn)行賦值;
  3. 使用val聲明的常量的值不可被再次賦值。

聲明變量時(shí),我們可以不給出變量的類型,因?yàn)樵诔跏蓟臅r(shí)候,Scala的類型推斷機(jī)制能夠根據(jù)變量的初始化的值自動(dòng)推算出來。

上述聲明變量myVar和age的代碼,等同于下列代碼:

var myVar = "Hello"   //使用關(guān)鍵字var聲明的變量

val age = 10           //使用關(guān)鍵字val聲明的變量

注:使用關(guān)鍵字var或val聲明變量時(shí),后面緊跟的變量名稱不能和Scala中的保留字重名,而且變量名可以以字母或下劃線開頭,且變量名是嚴(yán)格區(qū)分大小寫的。

1.2.2 數(shù)據(jù)類型

  • 任何一種編程語言都有特定的數(shù)據(jù)類型,Scala也不例外。
  • 與其他語言相比,Scala中的所有值都有一個(gè)類型,包括數(shù)值和函數(shù)。

Scala中數(shù)據(jù)類型的層次結(jié)構(gòu)
Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,scala
從上圖中可以看出,Any是所有類型的超類型,也稱為頂級(jí)類型,它包含兩個(gè)直接子類,具體如下:

  • AnyVal:表示值類型,值類型描述的數(shù)據(jù)是一個(gè)不為空的值,而不是一個(gè)對象。它預(yù)定義了9種類型,分別是Double、Float、Long、Int、Short、Byte、Unit、Char和Boolean。其中,Unit是一種不代表任何意義的值類型,它的作用類似Java中void。

  • AnyRef:表示引用類型??梢哉J(rèn)為,除值以外,所有類型都繼承自AnyRef。

在Scala數(shù)據(jù)類型層級(jí)結(jié)構(gòu)底部,還有兩個(gè)數(shù)據(jù)類型,分別是Nothing和Null,具體介紹如下:

  • Nothing:所有類型的的子類型,也稱為底部類型。它覺的用途是發(fā)出終止信號(hào),例如拋出異常、程序退出或無限循環(huán)。
  • Null:所有引用類型的子類型,它主要用途是與其他JVM語言互操作,幾乎不在Scala代碼中使用。

1.2.3 算術(shù)和操作符重載

Scala中算術(shù)操作符(+、-、*、/、%)的作用和Java是一樣的,位操作符(&、|、>>、<<)也是一樣的。特別強(qiáng)調(diào)的是,Scala的這些操作符其實(shí)是方法。例如,a+b其實(shí)是a.+(b)的簡寫。
Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,scala
注:Scala沒有提供操作符++和–。如果我們想實(shí)現(xiàn)遞增或者遞減的效果,可以使用“+=1”或者“-=1”這種方式來實(shí)現(xiàn)。

1.2.4 控制結(jié)構(gòu)語句

在Scala中,控制結(jié)構(gòu)語句包括條件分支語句和循環(huán)語句。其中,條件分支語句有if語句、if…else語句、if…else if…else語句以及if…else嵌套語句;循環(huán)語句有for循環(huán),while循環(huán)和do…while循環(huán)。

  1. 條件分支語句
  • if條件語句
if (布爾表達(dá)式){
       語句塊
} 
  • if-else條件語句
if (布爾表達(dá)式){
        語句塊
} else{
        語句塊
}
  • if-else-if-else語句
if (布爾表達(dá)式1){
        語句塊
} else if(布爾表達(dá)式2){
         語句塊
} else if(布爾表達(dá)式3){
       語句塊
} else {
       語句塊
}
  • if-else嵌套語句
if (布爾表達(dá)式1){
       語句塊
               if(布爾表達(dá)式2){
                      語句塊
               }
}else if (布爾表達(dá)式3){
        語句塊
               else if (布爾表達(dá)式4){
                      語句塊
                }
}else{
         語句塊
}

示例代碼如下:
Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,scala
2. 循環(huán)語句
Scala中的for語句和Java中的循環(huán)語句在語法上有較大的區(qū)別,下面我們來介紹一下Scala中的for循環(huán)語句。

  • for循環(huán)語句
for(變量<-表達(dá)式/數(shù)組/集合){
         循環(huán)語句;
}

下面,我們通過從0循環(huán)到9,每循環(huán)一次則就將該值打印輸出進(jìn)行操作演示。在Scala語法中,可以使用”0 to 9”表示從0到9的范圍,范圍包含9,示例代碼如下:

  • Dos 命令行下
    Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,scala

  • IDEA下
    Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,scala
    結(jié)果如下:
    0 1 2 3 4 5 6 7 8 9

Scala在for循環(huán)語句中可以通過使用if判斷語句過濾一些元素,多個(gè)過濾條件用分號(hào)分隔開。例如,輸出0-9范圍中大于5的偶數(shù),示例代碼如下:
Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,scala

  • while循環(huán)語句
    Scala中的while循環(huán)語句和Java中的完全一樣,語法格式如下:

  • while語句

while(布爾表達(dá)式){
         循環(huán)語句;
}

下面,我們通過打印輸出奇數(shù)的案例來演示while的使用。

假設(shè)有一個(gè)變量x=1,判斷是否小于10,如果是則打印輸出,然后再進(jìn)行+2運(yùn)算。

示例代碼如下:
Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,scala

  • do-while語句
do{
       循環(huán)語句;
}while(布爾表達(dá)式)

do…while循環(huán)語句與while語句的主要區(qū)別是,do…while語句的循環(huán)語句至少執(zhí)行一次,示例代碼如下:
Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,scala

1.2.5 方法和函數(shù)

在Scala中,它和Java一樣也是擁有方法和函數(shù)。Scala的方法是類的一部分,而函數(shù)是一個(gè)對象可以賦值給一個(gè)變量。換句話來說,在類中定義的函數(shù)即是方法。

Scala中可以使用def語句和val語句定義函數(shù),而定義方法只能使用def語句。下面分別對Scala的方法和函數(shù)進(jìn)行講解。

  1. 方法
    Scala方法的定義格式如下:
def functionName ([參數(shù)列表]):[return type]={
         function body
         return [expr]
}

下面定義一個(gè)方法add,實(shí)現(xiàn)兩個(gè)數(shù)相加求和,示例代碼下:

def add(a:Int,b:Int):Int={
  var sum:Int = 0
  sum = a + b
  return sum
}

Scala的方法調(diào)用的格式如下:

//沒有使用實(shí)例的對象調(diào)用格式
functionName(參數(shù)列表)

//方法使用實(shí)例的對象來調(diào)用,我們可以使用類似Java的格式(“.”號(hào))
[instance.]functionName(參數(shù)列表)

下面,在類Test中,定義一個(gè)方法addInt,實(shí)現(xiàn)兩個(gè)整數(shù)相加求和。在這里, 我們通過“類名.方法名(參數(shù)列表)”來進(jìn)行調(diào)用,示例代碼如下:

scala> :paste                         # 多行輸入模式的命令
// Entering paste mode (ctrl-D to finish)
object Test{
def addInt(a:Int,b:Int):Int={
  var sum:Int =0
  sum = a + b
  return sum
 }
}
// Exiting paste mode, now interpreting. # Ctrl+d結(jié)束多行輸入模式
defined object Test
scala> Test.addInt(4,5)      # 方法調(diào)用
res0: Int = 9
  1. 函數(shù)
    Scala中的函數(shù)是一個(gè)對象,可以賦值給一個(gè)變量。
    Scala函數(shù)的定義語法格式如下:
val functionName ([參數(shù)列表]):[return type]={
           function body
           return [expr]
 }

下面,定義一個(gè)函數(shù)addInt,實(shí)現(xiàn)實(shí)現(xiàn)兩個(gè)整數(shù)相加求和,示例代碼如下:

scala> val addInt =(a:Int,b:Int) => a+b
addInt: (Int, Int) => Int = <function2>
scala> addInt(6,7)
res1: Int = 13
  • 方法轉(zhuǎn)換成函數(shù)
    方法轉(zhuǎn)換成函數(shù)的格式如下:
val f1 = m _

在上述的格式中,方法名m后面緊跟一個(gè)空格和下劃線,是為告知編譯器將方法轉(zhuǎn)換成函數(shù),而不是要調(diào)用這個(gè)方法。下面,定義一個(gè)方法m,實(shí)現(xiàn)將方法m轉(zhuǎn)成函數(shù),示例代碼如下:

scala> def m(x:Int,y:Int):Int=x*y          # 方法
m: (x: Int, y: Int)Int
scala> val f = m _
f: (Int, Int) => Int = <function2>          # 函數(shù)
scala> f(2,3)
res2: Int = 6

注:Scala方法的返回值類型可以不寫,編譯器可以自動(dòng)推斷出來,但是對于遞歸方法來說,必須要指定返回類型。

轉(zhuǎn)載自:https://blog.csdn.net/u014727709/article/details/132031799
歡迎start,歡迎評(píng)論,歡迎指正文章來源地址http://www.zghlxwxcb.cn/news/detail-679519.html

到了這里,關(guān)于Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語言基礎(chǔ)-2)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第二章 Spark基礎(chǔ)-01)

    Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第二章 Spark基礎(chǔ)-01)

    寧愿跑起來被拌倒無數(shù)次,也不愿規(guī)規(guī)矩矩走一輩子,就算跌倒也要豪邁的笑。 Spark于2009年誕生于美國加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室,它是一個(gè)可應(yīng)用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎。Spark不僅計(jì)算速度快,而且內(nèi)置了豐富的API,使得我們能夠更加容易編寫程序。 Spark下

    2024年02月03日
    瀏覽(85)
  • Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第二章 Spark基礎(chǔ)-03)

    Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第二章 Spark基礎(chǔ)-03)

    又回到了原點(diǎn),就從現(xiàn)在開始我的新生活吧。 章節(jié)概要:Spark運(yùn)行架構(gòu)與原理 I. 引言 A. 概述Spark B. Spark的特點(diǎn)和優(yōu)勢 II. Spark運(yùn)行架構(gòu)概述 A. Spark集群模式 B. Spark運(yùn)行模式 C. Spark執(zhí)行引擎:Spark Core D. Spark計(jì)算模塊:RDD E. Spark數(shù)據(jù)抽象模塊:DataFrame和Dataset F. Spark資源管理器:

    2024年02月03日
    瀏覽(102)
  • Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第二章 Spark基礎(chǔ)-02)

    Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第二章 Spark基礎(chǔ)-02)

    人生就像賽跑,不在乎你是否第一個(gè)到達(dá)盡頭,而在乎你有沒有跑完全程。 Spark于2009年誕生于美國加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室,它是一個(gè)可應(yīng)用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎。Spark不僅計(jì)算速度快,而且內(nèi)置了豐富的API,使得我們能夠更加容易編寫程序。 請參考《

    2024年02月03日
    瀏覽(100)
  • Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第三章 Spark RDD 彈性分布式數(shù)據(jù)集-02)

    Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第三章 Spark RDD 彈性分布式數(shù)據(jù)集-02)

    人生很長,不必慌張。你未長大,我要擔(dān)當(dāng)。 傳統(tǒng)的MapReduce雖然具有自動(dòng)容錯(cuò)、平衡負(fù)載和可拓展性的優(yōu)點(diǎn),但是其最大缺點(diǎn)是采用非循環(huán)式的數(shù)據(jù)流模型,使得在迭代計(jì)算式要進(jìn)行大量的磁盤IO操作。Spark中的RDD可以很好的解決這一缺點(diǎn)。 RDD是Spark提供的最重要的抽象概念

    2024年02月22日
    瀏覽(372)
  • 數(shù)據(jù)分析Pandas專欄---第一章<數(shù)據(jù)清洗>

    當(dāng)我們使用爬蟲從網(wǎng)上收集到大量的數(shù)據(jù)時(shí),經(jīng)常會(huì)面臨一個(gè)重要任務(wù):對這些數(shù)據(jù)進(jìn)行清洗和整理,以便進(jìn)一步分析和利用。在Python中,pandas是一個(gè)功能強(qiáng)大且廣泛使用的數(shù)據(jù)處理庫,它提供了各種靈活而高效的工具,可以方便地進(jìn)行數(shù)據(jù)清洗和轉(zhuǎn)換。本篇文章將重點(diǎn)介紹

    2024年02月21日
    瀏覽(25)
  • 從零開始學(xué)數(shù)據(jù)分析之——《線性代數(shù)》第一章 行列式

    從零開始學(xué)數(shù)據(jù)分析之——《線性代數(shù)》第一章 行列式

    三十而立之年,開始自學(xué)數(shù)據(jù)分析,工作比較清閑,現(xiàn)發(fā)帖記錄自己的數(shù)據(jù)分析之路,數(shù)據(jù)分析要學(xué)很多的東西,經(jīng)過多月的摸索,目前分兩個(gè)方面開始學(xué)習(xí): ·知識(shí)方面:數(shù)學(xué)為王,拿起書本,重學(xué)《概率與統(tǒng)計(jì)》、《微積分》、《線性代數(shù)》 ·軟件方面:MySQL、Python 將暫

    2024年02月12日
    瀏覽(31)
  • 數(shù)據(jù)結(jié)構(gòu)英文習(xí)題解析-第一章 算法復(fù)雜度分析Algorithm Analysis

    前言:最近快到FDS考試了,po重刷了一下學(xué)校的題目,自己整理了一些解析orz 因?yàn)閜o在自己找解析和學(xué)習(xí)的過程中非常痛苦,所以在此共享一下我的題目和自己寫的解題思路,歡迎各位指出錯(cuò)誤~全章節(jié)預(yù)計(jì)會(huì)陸續(xù)更新,可在專欄查看~ HW1 1. The major task of algorithm analysis is to an

    2024年03月12日
    瀏覽(87)
  • Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)課后答案

    一、填空題 1、Scala語言的特性包含 面向?qū)ο缶幊?、函數(shù)式編程的、 靜態(tài)類型的 、可擴(kuò)展的、 可以交互操作的 。 2、在Scala數(shù)據(jù)類型層級(jí)結(jié)構(gòu)的底部有兩個(gè)數(shù)據(jù)類型,分別是 Nothing 和 Null 。 3、在Scala中,聲明變量的有 var 聲明變量和 val 聲明常量。 4、在Scala中,獲取

    2024年01月17日
    瀏覽(95)
  • 企業(yè)Spark案例--酒店數(shù)據(jù)分析實(shí)戰(zhàn)提交

    第1關(guān):數(shù)據(jù)清洗--過濾字段長度不足的且將出生日期轉(zhuǎn): package?com.yy ? import?org.apache.spark.rdd.RDD import?org.apache.spark.sql.{DataFrame,?Dataset,?SparkSession} object?edu{ ????/**********Begin**********/ ????//?此處可填寫相關(guān)代碼 ????case?class?Person(id:String,Name:String,CtfTp:String,CtfId:String,G

    2024年02月09日
    瀏覽(110)
  • Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)課后習(xí)題參考答案

    項(xiàng)目一: 一、選擇題 DCCDAD 二、簡答題 1、Hadoop MapReduce要求每個(gè)步驟間的數(shù)據(jù)序列化到磁盤,所以I/O成本很高,導(dǎo)致交互分析和迭代算法開銷很大;Spark 提供了內(nèi)存計(jì)算,把中間結(jié)果放到內(nèi)存中,帶來了更高的迭代運(yùn)算效率。通過支持有向無環(huán)圖(DAG)的分布式并行計(jì)算的編

    2024年02月11日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包