大数据面试题——Spark面试题(四)

26、如何从Kafka中获取数据?

1)基于Receiver的方式 

这种方式使用Receiver来获取数据。Receiver是使用Kafka的高层次Consumer API来实现的。receiver从Kafka中获取的数据都是存储在Spark Executor的内存中的,然后Spark Streaming启动的job会去处理那些数据。

2)基于Direct的方式

这种新的不基于Receiver的直接方式,是在Spark 1.3中引入的,从而能够确保更加健壮的机制。替代掉使用Receiver来接收数据后,这种方式会周期性地查询Kafka,来获得每个topic+partition的最新的offset,从而定义每个batch的offset的范围。当处理数据的job启动时,就会使用Kafka的简单consumer api来获取Kafka指定offset范围的数据。

27、RDD创建方式?

1)从集合创建rdd

 val rdd: RDD[Int] = sc.parallelize(Array(1, 2, 3, 4, 5, 6, 7, 8))

2)从外部存储系统的数据集创建rdd

由外部存储系统的数据集创建RDD包括:本地的文件系统,还有所有Hadoop支持的数据集,比如HDFS、HBase等

 //读取文件。input为集群路径:hdfs://hadoop102:9000/input  val lineWordRdd: RDD[String] = sc.textFile("input")

3)从其它rdd创建

 //创建一个RDD  val rdd: RDD[Int] = sc.makeRDD(1 to 4,2)  //调用map方法,每个元素乘以2  val mapRdd: RDD[Int] = rdd.map(_ * 2)

28、Spark并行度怎么设置比较合适?

spark并行度,每个core承载24个partition,如,32个core,那么64128之间的并行度,也就是设置64~128个partion,并行读和数据规模无关,只和内存使用量和cpu使用时间有关。

29、Spark如何处理不能被序列化的对象?

将不能序列化的内容封装成object。

30、collect功能是什么,其底层是怎么实现的?

driver通过collect把集群中各个节点的内容收集过来汇总成结果,collect返回结果是Array类型的,collect把各个节点上的数据抓过来,抓过来数据是Array型,collect对Array抓过来的结果进行合并,合并后Array中只有一个元素,是tuple类型(KV类型的)的。

31、为什么Spark Application在没有获得足够的资源,job就开始执行了,可能会导致什么什么问题发生?

会导致执行该job时候集群资源不足,导致执行job结束也没有分配足够的资源,分配了部分Executor,该job就开始执行task,应该是task的调度线程和Executor资源申请是异步的;如果想等待申请完所有的资源再执行job的:

需要将

    spark.scheduler.maxRegisteredResourcesWaitingTime设置的很大

    spark.scheduler.minRegisteredResourcesRatio 设置为1,但是应该结合实际考虑

否则很容易出现长时间分配不到资源,job一直不能运行的情况。

32、map与flatMap的区别?

map:对RDD每个元素转换,文件中的每一行数据返回一个数组对象

flatMap:对RDD每个元素转换,然后再扁平化

将所有的对象合并为一个对象,文件中的所有行数据仅返回一个数组对象,会抛弃值为null的值

33、Spark on Mesos中,什么是的粗粒度分配,什么是细粒度分配,各自的优点和缺点是什么?

粗粒度:启动时就分配好资源, 程序启动,后续具体使用就使用分配好的资源,不需要再分配资源;好处:作业特别多时,资源复用率高,适合粗粒度;不好:容易资源浪费,假如一个job有1000个task,完成了999个,还有一个没完成,那么使用粗粒度,999个资源就会闲置在那里,资源浪费。

细粒度分配:用资源的时候分配,用完了就立即回收资源,启动会麻烦一点,启动一次分配一次,会比较麻烦

34、driver的功能是什么?

一个Spark作业运行时包括一个Driver进程,也是作业的主进程,具有main函数,并且有SparkContext的实例,是程序的入口点

功能:负责向集群申请资源,向master注册信息,负责了作业的调度,负责作业的解析、生成Stage并调度Task到Executor上,包括DAGScheduler,TaskScheduler

#大数据开发##面试题#
全部评论
看过上一篇,追过来看这篇的
点赞 回复 分享
发布于 2022-08-12 19:43
点赞 回复 分享
发布于 2022-08-24 20:39 江苏

相关推荐

已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
4 8 评论
分享
牛客网
牛客企业服务