Spark 八股文
- Spark解决什么问题
 - Spark为什么会有自己的资源调度器
 - Spark运行模式
 - Spark 常用端口号
 - 简述Spark的架构与作业提交流程
 - Spark任务使用什么进行提交,JavaEE界面还是脚本
 - Spark提交作业参数
 - RDD五大属性
 - Spark 的 transformation 算子
 - Spark的action算子
 - map和mapPartitions区别
 - Repartition和Coalesce区别
 
Spark解决什么问题
Hadoop主要解决 : 海量数据的存储和海量数据的分析计算
Spark主要解决 : 海量数据的分析计算
Spark为什么会有自己的资源调度器
Hadoop 的 Yarn 框架比 Spark 框架诞生的晚,所以 Spark 自己也设计了一套资源调度框架
Spark运行模式
Local:运行在一台机器上。 测试用
Standalone:是Spark自身的一个调度系统。 对集群性能要求非常高时用。国内很少使用
Yarn:采用Hadoop的资源调度器。 国内大量使用
Mesos:国内很少使用
Spark 常用端口号
4040 spark-shell 任务端口
7077 内部通讯端口。 类比 Hadoop 的 8020/9000
8080 查看任务执行情况端口。 类比Hadoop的8088
18080 历史服务器。类比 Hadoop 的19888
简述Spark的架构与作业提交流程

Spark任务使用什么进行提交,JavaEE界面还是脚本
Shell 脚本
Spark提交作业参数
executor-cores : 每个 executor 使用的内核数,默认为 1 ,官方建议2 - 5个
num-executors : 启动 executors 的数量,默认为 2
executor-memory : executor 内存大小,默认 1 G
driver-cores : driver 使用内核数,默认为 1
driver-memory : driver 内存大小,默认 512 M
例子 :
spark-submit \
--master local[5] \
--driver-cores 2 \
--driver-memory 8g \
--executor-cores 4 \
--num-executors 10 \
--executor-memory 8g \
--class PackageName.ClassName XXXX.jar \
--name "Spark Job Name" \
InputPath \
OutputPath
 
RDD五大属性
Spark 的 transformation 算子
单Value
- map
 - mapPartitions
 - mapPartitionsWithIndex
 - flatMap
 - glom
 - groupBy
 - filter
 - sample
 - distinct
 - coalesce
 - repartition
 - sortBy
 - pipe
 
双vlaue
- intersection
 - union
 - subtract
 - zip
 
Key-Value
- partitionBy
 - reduceByKey
 - groupByKey
 - aggregateByKey
 - foldByKey
 - combineByKey
 - sortByKey
 - mapValues
 - join
 - cogroup
 
Spark的action算子
- reduce
 - collect
 - count
 - first
 - take
 - takeOrdered
 - aggregate
 - fold
 - countByKey
 - save
 - foreach
 
map和mapPartitions区别
map:每次处理一条数据
mapPartitions:每次处理一个分区数据










