创建RDD的两种方式?
1.并行化驱动程序中的现有集合(调用SparkContext的parallelize()方法)
2.引用外部存储系统中的数据集(调用SparkContext的testFile()等方法)
Spark如何确保宕机后快速恢复?
Spark以RDD作为操作单元,RDD只能从持久存储或通过Transformations操作产生,相比于分布式共享内存(DSM)可以更高效实现容错,对于丢失部分数据分区只需根据它的lineage就可重新计算出来,而不需要做特定的Checkpoint。
RDD的数据分区特性
可以通过数据的本地性来提高性能,这与HadoopMapReduce是一样的。
RDD都是可序列化的
在内存不足时可自动降级为磁盘存储,把RDD存储于磁盘上,这时性能会有大的下降。
RDD的存储与分区
用户可以选择不同的存储级别存储RDD以便重用。当前RDD默认是存储于内存,但当内存不足时,RDD会spill到disk。
RDD在需要进行分区把数据分布于集群中时会根据每条记录Key进行分区(如Hash分区),以此保证两个数据集在Join时能高效。