Spark面试题

Spark中的RDD是什么,有哪些特性

RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。

Dataset:就是一个集合,用于存放数据的

Distributed:分布式,可以并行在集群计算

Resilient:表示弹性的

  • 1、RDD中的数据可以存储在内存或者是磁盘
  • 2、RDD中的分区是可以改变的

五大特性

  • A list of partitions:一个分区列表,RDD中的数据都存在一个分区列表里面
  • A function for computing each split: 作用在每一个分区中的函数
  • A list of dependencies on other RDDs: 一个RDD依赖于其他多个RDD,这个点很重要,RDD的容错机制就是依据这个特性而来的
  • Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned): 可选的,针对于kv类型的RDD才具有这个特性,作用是决定了数据的来源以及数据处理后的去向
  • Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file): 可选项,数据本地性,数据位置最优

概述一下spark中的常用算子区别(map、mapPartition、foreach、forEachPartition)

  • map: 用于遍历RDD,将函数f应用于每一个元素,返回新的RDD(transformation算子)。
  • foreach:用于遍历RDD,将函数f应用于每一个元素,无返回值(action算子)。
  • mapPartitions:用于遍历操作RDD中的每一个分区,返回生成一个新的RDD(transformation算子)。
  • foreachPartition: 用于遍历操作RDD中的每一个分区。无返回值(action算子)。

总结:一般使用mapPartitions或者foreachPartition算子比map和foreach更加高效,推荐使用。

坚持原创技术分享,您的支持将鼓励我继续创作!
------ 本文结束 ------

  • 本文作者: 月欣
  • 版权声明: 本博客所有文章除特别声明外,转载请注明出处!
0%