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

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

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

1.3 Scala的數(shù)據(jù)結(jié)構(gòu)

對(duì)于每一門編程語(yǔ)言來(lái)說,數(shù)組(Array)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,主要用來(lái)存儲(chǔ)數(shù)據(jù)類型相同的元素。Scala中的數(shù)組分為定長(zhǎng)數(shù)組和變長(zhǎng)數(shù)組,定義定長(zhǎng)數(shù)組,需要使用new關(guān)鍵字,而定義變長(zhǎng)數(shù)組時(shí),則需要導(dǎo)包import scala.collection.mutable.ArrayBuffer。

1.3.1 數(shù)組

數(shù)組(Array)主要用來(lái)存儲(chǔ)數(shù)據(jù)類型是每個(gè)人元素。

  • 數(shù)組定義與使用
    Scala中的數(shù)組分為定長(zhǎng)數(shù)組和變長(zhǎng)數(shù)組,這兩種數(shù)組的定義方式如下:

  • 定義定長(zhǎng)數(shù)組
    New Array[T] (數(shù)組長(zhǎng)度) //定義定長(zhǎng)數(shù)組

  • 定義變長(zhǎng)數(shù)組
    ArrayBufferT //定義變長(zhǎng)數(shù)組

注:定義定長(zhǎng)數(shù)組,需要使用new關(guān)鍵字,而定義變長(zhǎng)數(shù)組時(shí),則需要導(dǎo)包import scala.collection.mutable.ArrayBuffer。

下面,通過一個(gè)例子來(lái)演示Scala數(shù)組簡(jiǎn)單使用,具體代碼如下所示。

package cn.itcast.scala

import scala.collection.mutable.ArrayBuffer

object Ch01_ArrayDemo {

  def main(args: Array[String]): Unit = {

    //定義定長(zhǎng)數(shù)組:定義長(zhǎng)度為8的定長(zhǎng)數(shù)組,數(shù)組中的每個(gè)元素初始化為0

    val arr1 = new Array[Int](8)

    //打印數(shù)組,內(nèi)容是數(shù)組的hashcode值

    println(arr1)

//定義變長(zhǎng)數(shù)組(數(shù)組緩沖),需要導(dǎo)入包:import scala.collection.mutable.ArrayBuffer

    val arr2 = ArrayBuffer[Int]()

    //向變長(zhǎng)數(shù)組中追加元素

    arr2 += 1

    //打印變長(zhǎng)數(shù)組

    println(arr2)

    //向變長(zhǎng)數(shù)組中追加多個(gè)元素

    arr2 += (2,3,4,5)

    println(arr2)

    //追加一個(gè)定長(zhǎng)數(shù)組

    arr2 ++= Array(6,7)

    println(arr2)

    //追加一個(gè)變長(zhǎng)數(shù)組(數(shù)組緩沖)

    arr2 ++= ArrayBuffer(8,9)

    println(arr2)

    //在變長(zhǎng)數(shù)組的某個(gè)位置插入元素

    arr2.insert(0,-1,0)

    println(arr2)

    //刪除數(shù)組的某個(gè)元素

    arr2.remove(0)

    println(arr2)

  }

}
數(shù)組的遍歷

Scala中,如果想要獲取數(shù)組中的每一個(gè)元素,則需要將數(shù)組進(jìn)行遍歷操作。代碼如下:

package cn.itcast.scala

object Ch02_ArrayTraversal {

  def main(args: Array[String]): Unit = {

    //定義定長(zhǎng)數(shù)組

    //val array = new Array[Int](8) //方式1

    val myArr = Array(1.9, 2.9, 3.4, 3.5) //方式2

    //打印輸出數(shù)組中的所有元素

    for(x<-myArr){

      print(x+" ")

    }

    println()

    //計(jì)算數(shù)組中所有元素的和

    var total = 0.0

    for(i <- 0 to (myArr.length-1)){

      total += myArr(i)

    }

    println("總和為:"+total)

    //查找數(shù)組中的最大值

    var max = myArr(0)

    for(i <- 1 to (myArr.length-1)){

      if(max < myArr(i)){

        max = myArr(i)

      }

    }

    println("最大值為:"+max)

  }

}
數(shù)組轉(zhuǎn)換

數(shù)組轉(zhuǎn)換就是通過yield關(guān)鍵字將原始的數(shù)組進(jìn)行轉(zhuǎn)換,會(huì)產(chǎn)生一個(gè)新的數(shù)組,然而原始的數(shù)組保持不變。定義一個(gè)數(shù)組,實(shí)現(xiàn)將偶數(shù)取出乘以10后生成一個(gè)新的數(shù)組,具體代碼如下所示:

package cn.itcast.scala

object Ch03_ArrayYieldTest {

  def main(args: Array[String]): Unit = {

    //定義一個(gè)數(shù)組

    var arr = Array(1,2,3,4,5,6,7,8,9)

    //將偶數(shù)取出乘以10后再生成一個(gè)新的數(shù)組

    val newArr = for (e <- arr if e%2 == 0) yield e * 10

    println(newArr.toBuffer) //將定長(zhǎng)數(shù)組轉(zhuǎn)為變長(zhǎng)數(shù)組

  }

}

1.3.2 元組

Scala的元組是對(duì)多個(gè)不同類型對(duì)象的一種簡(jiǎn)單封裝,它將不同的值用小括號(hào)括起來(lái),并用逗號(hào)作分隔,即表示元組。

創(chuàng)建元組

創(chuàng)建元組的語(yǔ)法格式如下:

  val tuple=(元素,元素...)

下面,通過簡(jiǎn)單的例子進(jìn)行演示創(chuàng)建元組,例如:創(chuàng)建一個(gè)包含String類型、Double類型以及Int類型的元組,具體代碼如下:

scala> val tuple = ("itcast",3.14,65535)

tuple: (String, Double, Int) = (itcast,3.14,65535)
獲取元組中的值

在Scala中,獲取元組中的值是通過下劃線加腳標(biāo)(例如:tuple._1,tuple._2)來(lái)獲取的,元組中的元素腳標(biāo)是從1開始的。代碼如下:

scala> tuple._1                         # 獲取第一個(gè)值

res0: String = itcast

scala> tuple._2                         # 獲取第一個(gè)值

res1: Double = 3.14
拉鏈操作

在Scala的元組中,可以通過使用“zip”命令將多個(gè)值綁定在一起。例如,定義兩個(gè)數(shù)組,分別是score和names,將這兩個(gè)數(shù)組捆綁在一起,具體代碼如下:

scala> val scores = Array(88,95,80)

scores: Array[Int] = Array(88, 95, 80)

scala> val names =Array("zhangsan","lisi","wangwu")

names: Array[String] = Array(zhangsan, lisi, wangwu)

scala> names.zip(scores)

res2: Array[(String, Int)] = Array((zhangsan,88), (lisi,95), (wangwu,80))

注:當(dāng)兩個(gè)數(shù)組個(gè)數(shù)不等時(shí),會(huì)自動(dòng)適配較短長(zhǎng)度,多余元素?zé)o相應(yīng)匹配元素會(huì)被自動(dòng)拋棄。

1.3.3 集合

在Scala中,集合有三大類: List、Set以及Map,所有的集合都擴(kuò)展自Iterable特質(zhì)。

Scala 集合分為可變的(mutable)和不可變(immutable)的集合。其中,可變集合可以在適當(dāng)?shù)牡胤奖桓禄驍U(kuò)展,意味著可以對(duì)集合進(jìn)行修改、添加、移除元素;不可變集合類,相比之下,初始化后就永遠(yuǎn)不會(huì)改變。

List

在Scala中,List列表和數(shù)組類似,列表的所有元素都具有相同類型。然而,列表與數(shù)組不同的是,列表是不可變的。

定義不同類型列表List,具體代碼如下:

// 字符串

val fruit: List[String] =List("apples","oranges","pears")

// 整型

val nums: List[Int] = List(1, 2, 3, 4)

// 空

val empty: List[Nothing] = List()

// 二維列表

val dim: List[List[Int]] =

            List(

            List(1, 0, 0),

            List(0, 1, 0),

            List(0, 0, 1)

 )

在Scala中,可以使用“Nil”和“::”操作符來(lái)定義列表。代碼如下:

// 字符串

val fruit = "apples":: ("oranges":: ("pears" :: Nil))

// 整型

val nums = 1 :: (2 :: (3 :: ( 4 :: Nil)))

// 空列表

val empty = Nil

// 二維列表

val dim = (1 :: (0 :: (0 :: Nil))) ::

                (0 :: (1 :: (0 :: Nil))) ::

                (0 :: (0 :: (1 :: Nil))) :: Nil

Scala也提供了很多操作List的方法,如下表所示。
Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語(yǔ)言基礎(chǔ)-3),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,Scala
示例代碼如下:

package cn.itcast.scala

object Ch04_ListTest {

  def main(args: Array[String]): Unit = {

    //定義List集合

    //val fruit:List[String] = List("apples","oranges","pears")

    val fruit = "apples"::("oranges"::("pears"::Nil))

    val nums = Nil

    println("Head of fruit:" + fruit.head)

    println("Tail of fruit:" + fruit.tail)

    println("check if fruit is empty:"+fruit.isEmpty)

    println("check if nums is empty:"+nums.isEmpty)

    println("Take of fruit:"+fruit.take(2))

    println("contains of fruit oranages:"+fruit.contains("oranges"))

  }

}
Set

在Scala中,Set是沒有重復(fù)對(duì)象的集合,所有元素都是唯一的。默認(rèn)情況下,Scala 使用不可變Set集合,若想使用可變的Set集合,則需要引入scala.collection.mutable.Set包。

定義Set集合的語(yǔ)法格式如下:

val set: Set[Int] = Set(1,2,3,4,5)

Scala提供了很多操作Set集合的方法。接下來(lái),我們列舉一些操作Set集合的常見方法,具體如下表所示。
Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語(yǔ)言基礎(chǔ)-3),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,Scala
具體代碼如下所示:

package cn.itcast.scala

object Ch05_SetTest {

  def main(args: Array[String]): Unit = {

    //定義Set集合

    val site = Set("Itcast","Google","Baidu")

    val nums:Set[Int] = Set()

    println("第一個(gè)網(wǎng)站是:"+site.head)

    println("最后一個(gè)網(wǎng)站是:"+site.tail)

    println("site集合是否為空:"+site.isEmpty)

    println("nums集合是否為空:"+nums.isEmpty)

    println("查看site集合的前兩個(gè)網(wǎng)站:"+nums.take(2))

    println("site集合中是不包含網(wǎng)站Google:"+site.contains("Google"))

  }

}
Map

在Scala中,Map是一種可迭代的鍵值對(duì)(key/value)結(jié)構(gòu),并且鍵是唯一的,值不一定是唯一的,所有的值都是通過鍵來(lái)獲取的。Map中所有元素的鍵與值都存在一種對(duì)應(yīng)關(guān)系,這種關(guān)系即為映射。Map有兩種類型,可變集合與不可變集合,默認(rèn)是不可變Map。若需要使用可變的Map集合,則需要引入 import scala.collection.mutable.Map 類。

定義Map集合的語(yǔ)法格式如下:

var A:Map[Char,Int] = Map(鍵 -> 值,鍵 -> 值...)  //Map鍵值對(duì),鍵為Char,值為Int

Scala也提供了很多操作Map集合的方法。接下來(lái),我們列舉一些操作Map集合的常見方法,具體如下表所示:
Spark大數(shù)據(jù)分析與實(shí)戰(zhàn)筆記(第一章 Scala語(yǔ)言基礎(chǔ)-3),# Spark大數(shù)據(jù)分析與實(shí)戰(zhàn),spark,數(shù)據(jù)分析,筆記,Scala
示例代碼如下所示:

package cn.itcast.scala

object Ch06_MapTest {

  def main(args: Array[String]): Unit = {

    //定義Map集合

    val colors = Map("red"-> "#FF0000",

      "azure"-> "#F0FFFF",

      "peru"-> "#CD853F")

    val peruColor = if(colors.contains("peru")) colors("peru") else 0

    val azureColor = colors.getOrElse("azure",0)

    println("獲取colors中鍵為red的值:"+colors("red"))

    println("獲取colors中所有的鍵:"+colors.keys)

    println("獲取colors中所有的值:"+colors.values)

    println("檢測(cè)colors是否為空:"+colors.isEmpty)

    println("判斷colors中是否包含鍵peru,包含則返回對(duì)應(yīng)的值,否則返回0:"+peruColor)

    println("判斷colors中是否包含鍵azure,包含則返回對(duì)應(yīng)的值,否則返回0:"+azureColor)

  }

}

轉(zhuǎn)載自:https://blog.csdn.net/u014727709/article/details/131679759

歡迎start,歡迎評(píng)論,歡迎指正文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-695377.html

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

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

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

相關(guān)文章

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

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

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

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

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

    寧愿跑起來(lái)被拌倒無(wú)數(shù)次,也不愿規(guī)規(guī)矩矩走一輩子,就算跌倒也要豪邁的笑。 Spark于2009年誕生于美國(guó)加州大學(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)勢(shì) 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 RDD 彈性分布式數(shù)據(jù)集-02)

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

    人生很長(zhǎng),不必慌張。你未長(zhǎng)大,我要擔(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ù):對(duì)這些數(shù)據(jù)進(jìn)行清洗和整理,以便進(jìn)一步分析和利用。在Python中,pandas是一個(gè)功能強(qiáng)大且廣泛使用的數(shù)據(jù)處理庫(kù),它提供了各種靈活而高效的工具,可以方便地進(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語(yǔ)言的特性包含 面向?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ù)清洗--過濾字段長(zhǎng)度不足的且將出生日期轉(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 二、簡(jiǎn)答題 1、Hadoop MapReduce要求每個(gè)步驟間的數(shù)據(jù)序列化到磁盤,所以I/O成本很高,導(dǎo)致交互分析和迭代算法開銷很大;Spark 提供了內(nèi)存計(jì)算,把中間結(jié)果放到內(nèi)存中,帶來(lái)了更高的迭代運(yùn)算效率。通過支持有向無(wú)環(huán)圖(DAG)的分布式并行計(jì)算的編

    2024年02月11日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包