Spark考前概念相關題復習
AUthor:萌狼藍天
嗶哩嗶哩:萌狼藍天
博客園:我的文章 - 萌狼藍天
選擇題
Hadoop
1.HADOOP的三大核心組件
- HDFS分布式文件系統
- YARN作業調度 和 集群資源管理的框架
- MAPREDUCE 分布式運算編程框架
2.hadoop完全分布式集群主節點上的角色有
- NameNode
- ResourceManager
- SecondaryNameNode7
3.hadoop的集群包括HDFS、YARN
4.YARN集群的角色包括ResourceManager、NodeManager
5.HDFS集群的角色包括NameNode、DataNode、SecondaryNameNode7
Spark
1.Spark是快速、分布式、可擴展、容錯的集群計算框架
2.Spark是基於內存計算的大數據分布式計算框架
3.大數據的“4V”特性指的是:
- Volume數據體量巨大(傳統技術有瓶頸)
- Variety數據類型繁多
- value價值密度低
- Velocity處理速度快
4.Spark的特點
- 快速
- 易用性
- 通用性
- 隨處運行
- 代碼簡潔
5.SPARK完全分布式集群,主節點上的角色有Master
6.SPARK集群的角色包括Master、Worker
7.SPARK的安裝模式有
- 本地模式
- 偽分布式
- 完全分布式
- HA高可用模式
scala
Scala是Scalable Language的簡寫,由聯邦理工學院洛桑(EPFL)的Martin Odersky於2001年開始設計的一門多范式(規范 模式 ,編程方式)的編程語言。
Scala是一門以java虛擬機(JVM)為目標運行環境並將面向對象(完全面向對象)和函數式編程的最佳特性結合在一起的靜態類型編程語言。
- Scala 類java語言 源碼(.scala)要編譯成(.class)文件
- 簡潔、優雅、類型安全
- Spark的興起帶動了scala的發展
1.關於scala
- Scala是可擴展的
- Scala是純正的面向對象語言
- Scala是函數式編程語言
- Scala可以和Java無縫操作
- Scala是靜態類型的語言
- scala的目標運行環境是JVM
2.關於Scala 語言中數組
- 數組中某個指定的元素可通過索引來訪問
- 數組的第一個元素索引為0
- Scala中提供了變長數組類型,是ArrayBuffer
- 變長數組的長度是可變的
3.scala函數的說法正確的是
- 函數聲明方式為: def 函數名(參數列表):[返回類型]={函數體}
- 函數的返回類型在可推斷出來的情況下可以省略
4.屬於Scala 特性
- 命令式編程
- 函數式編程
- 靜態類型
5.不可擴展性不屬於Scala 特性
6.Scala屬於多范式編程語言
7.Scala編譯后的文件是以.class結尾
8.輔助構造函數名為this
9.繼承關鍵字為extends
10.類外隱藏屬性或方法關鍵字(私有)private
11.抽象類的關鍵字abstract
12.重寫父類方法關鍵字override
13.樣例類關鍵字case
14.單例對象關鍵字object
15.定義類關鍵字class
16.Scala應用場景
- 大數據技術Spark、Flink等
- 數據計算
- 提供面向Web服務,可以和Java等相同的spring Web應用
RDD
1.關於RDD
- 它是集群節點上的不可改變的、已分區的集合對象
- 可通過並行轉換的方式來創建
- 可以控制存儲級別(內存、磁盤等)
- 必須是可序列化的
- 是 彈性分布式數據集
(阿里雲提供)RDD的特點:
- 它是在集群節點上的不可變的、已分區的集合對象。
- 通過並行轉換的方式來創建如(map, filter, join, etc)。
- 失敗自動重建。
- 可以控制存儲級別(內存、磁盤等)來進行重用。
- 必須是可序列化的。
- 是靜態類型的。
2.使用saveAsTextFile存儲數據到HDFS.要求數據類型為RDD
綜合
使用 Scala編寫 Spark WordCount程序時需要調用的類
- org.apache.spark.SparkConf
- org.apache.spark.SparkContext
判斷題
1.大數據(big data),IT行業術語,指無法在一定時間范圍內用常規軟件工具進行捕捉、管理和處理的數據集合(正確)
2.數組可以包含不同類型的元素(錯誤)
3.Scala單例對象不可以帶參數,而類可以。(正確)
4.數組是不可變的(正確)
5.RDD主要有兩大類操作,分別為轉換(transformations)和操作(Actions)。所有的轉換操作都是懶惰(lazy)操作,只有等到Actions操作時才會真正啟動計算過程進行計算。(正確)
6.parallelize[T: ClassTag](seq: Seq[T],numSlices: Int = defaultParallelism): RDD[T],該函數的第二個參數是默認參數,默認值為defaultParallelism(正確)
能力考察
第四章能力考察
符合Scala編程規范?(C)
① String s = "Spark";
②"abc" .contains("a");
③"123".equals(123);
④ SparkConf sc = new SparkContext(conf)
A ①②
B ①④
C ②③
D ②④
【答案:C】
出字符串str的后4位作為輸出?(C)
A str.get(str.length-4,str.length)
B str.tail(str.length-4,str.length)
C str.substring(str.length - 4, str.length)
D str.cat(str.length -4,str.length)
【答案:C】
使用spark-submit如何指定在本地運行?( A)
A --master = local
B --class = local
C --executor-memory = 4G
D --master = root
【答案:A】
Spark支持的分布式部署方式中哪個是錯誤的?(D )
A Standalone
B Spark on Mesos
C Spark on YARN
D Spark on Local
【答案:D】
以下哪個不是 spark-submit的指定參數?(D )
A --master
B --class
C --deploy-mode
D --url
【答案:D】
第三章能力考察
以下哪種方法可以得到RDD(('a',1))?(D )
A RDD(('a', 1),('b',1)) union RDD(('a',2),('b',1))
B RDD(('a', 1),('b',1))join RDD(('a',2),('b',1))
C RDD(('a', 1),('b',1)) intersection RDD(('a',2),('b',1))
D RDD(('a', 1),('b',1)) subtract(('a',2),('b',1))
【答案:D】
下面哪個不是 RDD的特點?(C )
A 可分區
B 可序列化
C 可修改
D 可持久化
【答案:C】
下面哪一組全部都是轉化操作?C
A map、take、reduceByKey
B map、 filter 、collect
C map、zip 、reduceByKey
D join、map、take
【答案:C】
將RDD(('a',1).('b,1)) ( ) RDD(('a',1).( 'd',1))連接,得到 RDD('a',(1,Some(1)),('b',(1,None)),( )填寫以下哪種連接方法?C
A fullOuterJoin
B join
C leftOuterJoin
D rightOuterJoin
【答案:C】
以下哪組RDD 可以使用zip( )合並成鍵值對 RDD?( B)
A makeRDD(1 to 5,2), makeRDD(1 to 10,2)
B makeRDD(1 to 5,2),makeRDD(1 to 5,2)
C makeRDD(1 to 5,3), makeRDD(1 to 5,2)
D makeRDD(1 to 5,2),makeRDD(I to 10,4)
【答案:B】
使用union和 join連接RDD(('a',1),( 'b',1))和RDD(('a',1),( 'b',1))的結果分別為哪項?(C)
A 都為(('a',1),('b',1),( 'a',1),('b',1))
B 都為(('a',(1,1)),( 'b',(1,1)))
C union為(('a',1),('b',1), ( 'a',1),( 'b',1)), join為(('a',(1,1),('b'.(1,1))
D union為(('a',(1,1),('b',(1,1))), join為(('a',1),('b',1), ( 'a',1),( 'b',1))
【答案:C】
常用創建 RDD的方法有哪些?ABC
A makeRDD
B parallelize
C textFile
D testFile
【答案:ABC】
第二章能力考察
以下關於scala列表的說法正確的是(ABD)
A val list=List(1,2,3)或 val list=1::3::2::Nil可以定義一個列表
B List(1,2,3):::List(1,2,4)的結果是List(1,2,3,1,2,4)
C val list=List(3,4,5)可以通過索引1,即list(1)查詢第二個位置的元素,也可以通過list(1)=2更新該元素
D 列表List長度一旦定義則不可改變
【答案:ABD】
以下關於scala列表的說法正確的是(ABDE)
A val list=List(1,2,3)或 val list=1::3::2::Nil可以定義一個列表
B List(1,2,3):::List(1,2,4)的結果是List(1,2,3,1,2,4)
C val list=List(3,4,5)可以通過索引1,即list(1)查詢第二個位置的元素,也可以通過list(1)=2更新該元素
D 列表List長度一旦定義則不可改變
E val list=ListBuffer(3,4,5)可以通過索引1,即list(1)查詢第二個位置的元素,也可以通過list(1)=2更新該元素
【答案:ABDE】
以下哪個是scala函數的類型(CD)
A Int
B Any
C Int=>String
D (Double,Int)=>Int
【答案:CD】
以下定義矩形體積的函數及調用正確的是(ABCD)
A def vju(chang:Int)={ (kuan:Int)=>{ gao:Int=>chang*kuan*gao } } vju(3)(4)(5)
B def vju(chang:Int):Int=>(Int=>Int)={ def vjuchang(kuan:Int):Int=>Int={ def vjuck(gao:Int):Int=chang*kuan*gao vjuck } vjuchang } vju(3)(4)(5)
C val vju=(chang:Int)=>{ (kuan:Int,gao:Int)=>chang*kuan*gao } vju(3)(4,5)
D val vju=(chang:Int,kuan:Int,gao:Int)=>chang*kuan*gao vju(3,4,5)
【答案:ABCD】
以下scala函數的說法正確的是(AD)
A 函數聲明方式為: def 函數名(參數列表):[返回類型]={函數體}
B scala函數用return關鍵字來指明返回值,return不能省
C 函數聲明方式為:def 函數名(參數列表)=[返回類型]:{函數體}
D 函數的返回類型在可推斷出來的情況下可以省略
【答案:AD】
def concat[T]( xss: Array[T]* ): Array[T]中Array[T]*的含義正確的是(ABC)
A “*”來指明該參數為重復參數
B 該函數的參數為變長參數
C Scala 在定義函數時允許指定最后一個參數可以重復
D 該函數的參數為默認參數
【答案:ABC】
日常習題
第二章習題
下關於 List的定義不正確的一項是哪項?(C)
A val list =List(12,2,3)
B vall list=List("Hello"."World"")
C val list:String =List("a","c")
D val list = List[Int](1,2,3)
【答案:C】
對集(Set)進行操作"Set(3,0,1)+2+2-2"之后的結果為哪項?(B)
A Set(3,0,1,2)
B Set(3,0,1)
C Set(3,0)
D 以上均不正確
【答案:B】
以下 Scala變量的定義不正確的是哪項?(C)
A val words :String ="Hello World"
B val mumber= 12
C var number:String = None
D var apple:Double=2
【答案:C】
關於函數def sumSquare(args:Int)= {var r = 0 ;for(arg <- args) r += argarg ;r},輸出結果不一致的是哪項?(B)
A sumSquare(1,2,3)=14
B sumSquare(2,4)=16
C sumSquare(6)= 36
D sumSquare(1,1,2,3)= 15
【答案:B】
關於下面函數的結果說法錯誤的是哪項?def getPageNun(file:String) ={ val bookMap = Map("Chinese" -> 164, "Math" -> 180, "English" -> 150, "Geography" -> 120) bookMap.getorElse(file,0) }
A getPageNum("Math")=180
B getPageNum("English)= 150
C getPageNum("Physics )=164
D getPageNum(“Geography") = 120
【答案:C】
以下定義矩形體積的函數及調用正確的是(ABCD)
A def vju(chang:Int)={ (kuan:Int)=>{ gao:Int=>chang*kuan*gao } } vju(3)(4)(5)
B def vju(chang:Int):Int=>(Int=>Int)={ def vjuchang(kuan:Int):Int=>Int={ def vjuck(gao:Int):Int=chang*kuan*gao vjuck } vjuchang } vju(3)(4)(5)
C val vju=(chang:Int)=>{ (kuan:Int,gao:Int)=>chang*kuan*gao } vju(3)(4,5)
D val vju=(chang:Int,kuan:Int,gao:Int)=>chang*kuan*gao vju(3,4,5)
【答案:ABCD】