1、Scala解析
Ⅰ、Scala解析器
Scala解析器会快速编译Scala代码为字节码然后交给JVM运行;
代码语言:javascript复制 REPL -> Read(取值) -> Evaluation(求值) -> Print(打印) -> Lap(循环)
Ⅱ、默认情况下Scala不需要语句终结符,会默认将每一行作为一个语句,如果一行要写多条语句则必须要使用语句终结符 – " ;",也可以用块表达式包含多条语句,最后一条语句的值就是这个块表达式的运算结果。
2、Spark体系概览 – Spark的地位图解
3、Spark vs MapReduce的计算模型图解
Spark相对于Hadoop最大的不同在于迭代式计算模型;
4、Spark SQL和Hive的关系图解
5、Spark Streaming和Storm的计算模型对比图解
6、Wordcount程序原理深度剖析图解
7、Spark架构原理图解
Spark会为每一个Partition启动一个Task进行处理操作。
一个RDD在逻辑上抽象的代表了一个HDFS文件,但实际上被切分为多个分区(块)散落在集群的不同节点上。
8、transformation和action原理剖析图解
9、不使用RDD持久化会带来的问题的图解
10、使用RDD持久化的好处图解
11、共享变量的工作原理
广播变量会为每个节点拷贝一份变量,累加器则可以让多个task共同操作同一份变量进行累加计数;
广播变量是只读的;
累加器只提供了累加功能,只有Driver可以获取累加器的值;
12、Spark杂谈
Ⅰ、Spark自定义二次排序:
代码语言:javascript复制 需要Javabean实现Ordered 和 Serializable接口,然后在自定义的JavaBean里面定义需要进行排序的列,
并为列属性提供构造方法gettersetterhashcode和equals方法,然后实现接口内部的比较方法和业务逻辑。
Ⅱ、RDD自动进行内存和磁盘之间的权衡和切换的机制,就是RDD弹性特点所在;
Ⅲ、SparkContext是Spark所有功能的入口,作用包括初始化核心组件(DAGScheduler、TaskScheduler)和到Master节点注册等;
Ⅳ、ReduceByKey首先会在本地进行聚合操作之后再进行shuffle操作;