一:分布式基础架构
二:Spark大数据分析计算引擎
三:Hadoop与Spark
3.1补充
3.2:补充
3.3:补充
四:Spark的运行环境
集群模式对比
逻辑功能提交
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
4.1:补充
4.2:reduce() VS fold()
val list: List[Int] = List(1, 2, 3, 4)
val str: String = list.foldLeft("")(_ + _)
println(str)
案例:将两个map合并
def main(args: Array[String]): Unit = {
val map1: mutable.Map[String, Int] = mutable.Map(("a", 1), ("b", 2), ("c", 3))
val map2: mutable.Map[String, Int] = mutable.Map(("a", 4), ("d", 5), ("c", 6))
/*map2.foreach{
case (k,v) => {
val oldVal: Int = map1.getOrElse(k, 0)
map1.update(k,v+oldVal)
}
}*/
/*map2.foldLeft(map1)(
//map1
//map表示map1 kv表示map2中的一个元素
(map , kv) => {
val oldVal: Int = map.getOrElse(kv._1, 0)
map.update(kv._1,kv._2+oldVal)
map
}
)*/
println(
map2.foldLeft(map1)((map , kv )=>{
val oldVal: Int = map.getOrElse(kv._1, 0)
map.updated(kv._1,kv._2 + oldVal)
})
)
}
类比 yarn VS spark
补充 :什么时候用伴生类和伴生对象
补充:Thread.sleep 和 wait()的区别
public static void main(String[] args) throws Exception {
Thread t1 = new Thread();
Thread t2 = new Thread();
t1.start();
t2.start();
// sleep方法和wait方法的本质区别:字体不一样
t1.sleep(1000); // sleep方法是静态的,t1线程不会休眠, main线程休眠
t2.wait(); // wait方法是成员的,t2线程在等待
}
五:Spark的核心组件
5.1:Driver(驱动作业开始执行)
5.2:Executor(真正的进行计算)
5.3:Master & Worker(将多个机器的资源融合在一起)
5.4:ApplicationMaster
5.5:核心概念
Executor与Core(核)类比
5.6:并行度(多线程的场景下)
5.7:有向无环图
5.8:数据结构
六:RDD(spark核心的数据模型)
6.1:RDD的功能是如何组合的?
6.2:RDD核心配置属性