问题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同学们都有一定的了解,但是要论述
到此这篇spark 面试题(spark 面试题总结)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/73527.html