spark 面试题(spark 面试题总结)

spark 面试题(spark 面试题总结)问题 1 var val def 三个关键字之间的区别 伴生类与伴生对象 1 问题分析 主要考察 Scala 中的基本概念 这些是应该熟练掌握的 2 核心问题回答 var 是变量声明关键字 类似于 Java 中的变量 变量值可以更改 但是变量类型不能更改 val 常量声明关键字 def 关键字用于创建方法 注意方法和函数的区别 还有一个 lazyval 惰性 val 声明 意思是当需要计算时才使用

大家好,我是讯享网,很高兴认识大家。



问题1★★★

var、val、def三个关键字之间的区别;伴生类与伴生对象;

(1)问题分析:主要考察Scala中的基本概念,这些是应该熟练掌握的

(2)核心问题回答

var是变量声明关键字,类似于Java中的变量,变量值可以更改,但是变量类型不能更改

val常量声明关键字

def关键字用于创建方法(注意方法和函数的区别)

还有一个lazyval(惰性val)声明,意思是当需要计算时才使用,避免重复计算

类和它的伴生对象同名且存在于同一个文件中,二者互为伴生;可以相互访问私有成员(字段和方

法);

问题2★★★

caseclass是什么,与caseobject的区别是什么

(1)问题分析:主要考察样例类的理解,样例类在Scala、Spark的开发中使用的非常频繁,对其应该

熟练掌握

(2)核心问题回答

样例类是scala中特殊的类。当声明样例类时,如下事情会自动发生:

构造器中每一个参数都成为val。除非它被显示的声明为var(不建议这样做)


讯享网

提供apply方法。不用new关键字就能够构造出相应的对象

提供unapply方法。让模式匹配可以工作

将生成toString、equals、hashCode和copy方法。除非你显示的给出这些方法的定义

继承了Product和Serializable,即已实现序列化方法和可以应用Product的方法

caseclass是多例的,后面要跟构造参数,caseobject是单例的

此外,caseclass和其他类型完全一样,可以添加方法和字段,扩展它们;

caseclass最大的用处是用于模式匹配。

(3)问题扩展

模式匹配的相关问题

问题3★★★

Spark为什么快,SparkSQL一定比Hive快吗

(1)问题分析:常见问题,但是并不好答,因为只有对两个计算框架有一定程度的理解才能准确回

答。

(2)核心问题回答

通常大家只是说Spark是基于内存计算的,速度比MapReduce要快。或者说内存中迭代计算。其实没有

抓住问题的本质,所有的计算都是发生在内存中的,MR的计算一样是发生在内存中的。

说Spark是基于内存的计算,正确的理解应该:与MR相比Spark积极的使用内存,减少数据的落地。

Spark比MR快主要有两个原因:

MapReduce通常需要将计算的结果(即Job的结果)写入磁盘,然后还要读取磁盘,从而导致了频

繁的磁盘IO;

MapReduce采用了多进程模型,而Spark采用了多线程模型。MapReduce的MapTask和Reduce

Task是进程级别的,而SparkTask则是基于线程模型的,就是说map、reduceTask都是jvm进

程,每次启动都需要重新申请资源,消耗大量时间;Spark则是通过复用线程池中的线程来减少启

动、关闭task所需要的开销;

对于以下查询:

Selectmonth,sum(sales)fromtabgroupbymonth;

这个查询对于MR来说也只需要一个Job就能完成。此时,也许HQL的运行时间也许比SparkSQL还

快,因为MR没有中间的结果数据落地。

结论:Spark快不是绝对的,但绝大多数情况下,Spark都比Hadoop计算要快,特别是在迭代计算

中。这主要得益于其对Spark积极的使用内存以及对JVM使用的优化。

问题4★★★

描述以下你对RDD的理解

(1)问题分析:对Spark基本概念的考察,对RDD同学们都有一定的了解,但是要论述

小讯
上一篇 2025-05-18 08:32
下一篇 2025-06-01 22:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/200172.html