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