面试篇spark(spark core,spark sql,spark 优化) ゞ 浴缸里的玫瑰 2024-02-17 11:44 20阅读 0赞 ## 一:为什么学习spark? ## 相比较map-reduce框架,spark的框架执行效率更加高效。 mapreduce的执行框架示意图。 ![在这里插入图片描述][6628719a717f45808c722d5283ffbaaa.png] spark执行框架示意图 ![在这里插入图片描述][d19f1d9d8fa446db9c4eb82b16d3cdfd.png] spark的执行中间结果是存储在内存当中的,而hdfs的执行中间结果是存储在hdfs中的。所以在运算的时候,spark的执行效率是reduce的3-5倍。 ## 二:spark是什么? ## spark是一个执行引擎。 ## 三:spark包含哪些内容? ## ### 1. spark core。 ### spark RDD五大特性。 #### 1. RDD是由一系列partition组成的。 #### 每个rdd中,partition的个数和由hdfs中的map的个数决定的。和map的个数保持一致。 #### 2. 每个RDD会提供最佳的计算位置。 #### #### 3. 每个函数会作用在每个partition上。 #### ##### 算子 ##### 1. 转换算子 常见 Transformation 类算子 filter :过滤符合条件的记录数, true 保留, false 过滤掉。 map :将一个 RDD 中的每个数据项,通过 map 中的函数映射变为一个新的元素。特点:输入 一条,输出一条数据。 flatMap :先 map 后 flat 。与 map 类似,每个输入项可以映射为0到多个输出项。 sample 随机抽样算子,根据传进去的小数按比例进行有放回或者无放回的抽样。 reduceByKey 将相同的 Key 根据相应的逻辑进行处理。 sortByKey / sortBy 作用在 K,V格式的RDD 上,对 key 进行升序或者降序排序。 2. 行动算子 count :返回数据集中的元素数。会在结果计算完成后回收到 Driver 端。 take(n) :返回一个包含数据集前 n 个元素的集合。 first :效果等同于 take(1) ,返回数据集中的第一个元素。 foreach :循环遍历数据集中的每个元素,运行相应的逻辑。 collect :将计算结果回收到 Driver 端 3. 持久化算子 cache:默认将 RDD 的数据持久化到内存中。 cache 是懒执行。 checkpoint:checkpoint 将 RDD 持久化到磁盘,还可以切断 RDD 之间的依赖关系,也是懒执行。 #### 4. RDD之间相互依赖。 #### RDD的宽窄依赖。 一对一的就是窄依赖。 一对多的就是宽依赖。 在计算进行切割的时候,会将所有的窄依赖放在一起,成为一个stage。放在一个TaskScheduler中进行计算。 ![在这里插入图片描述][65045c94e6654844bfbb15ed3e5a3304.png] #### 5. 分区器是作用在 (K,V) 格式的 RDD 上。 #### shuffle HashShuffle ![在这里插入图片描述][2f6d847b0ff34f5391e20e9ab54961e2.png] SortShuffle ![在这里插入图片描述][02ac4260273440669ff2c4d32cc89d56.png] ![在这里插入图片描述][ce42580ad62a49aa8d9b76f4809aee2e.png] bypass机制 shuffle map task的数量小于spark.shuffle.sort.bypassMergeThreshold参数的值(默认200)或者不是聚合类的shuffle算子(比如groupByKey) ![在这里插入图片描述][7c983e5242bb466f94e5ac7fa76e6a8b.png] Shuffle文件寻址 ![在这里插入图片描述][d45517207a764db589da2d64bc95e3e8.png] ### 2. spark的俩种提交模式。 ### 用于测试 ![在这里插入图片描述][681c197f6567450399c55398b5b800f7.png] 用于生产 ![在这里插入图片描述][cb9208269ecb463c9f375e95cef42158.png] ![在这里插入图片描述][45c3471929934e9e85d23a9d1762732e.png] ### 2. spark sql。 ### 1. RDD和dataFromes和dataset。 dataset包含dataFormes,dataFormes包含RDD。 2. Spark on hive 和hive on spark Spark on hive 中,hive是存储,spark负责sql的优化和解析。 hive on Spark中,Hive即作为存储又负责sql的解析优化,Spark负责执行。 [6628719a717f45808c722d5283ffbaaa.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/d3c52ba88b6b4d598dfaaf3a0cda50a3.png [d19f1d9d8fa446db9c4eb82b16d3cdfd.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/622b55930a1b46f98c9c0d3210d9b6d7.png [65045c94e6654844bfbb15ed3e5a3304.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/5d0b493dc14c452986a4b7b35a879aa5.png [2f6d847b0ff34f5391e20e9ab54961e2.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/2e5718946e0a4cc694a7d36929a749a9.png [02ac4260273440669ff2c4d32cc89d56.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/39335e1312274252ab50c6669aeb2e84.png [ce42580ad62a49aa8d9b76f4809aee2e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/33d7fa16351f4efe80a5ab8d2110dcdb.png [7c983e5242bb466f94e5ac7fa76e6a8b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/7f7b2a830d2247aeadbaf72a1aaa9045.png [d45517207a764db589da2d64bc95e3e8.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/e3aa3a5f087c4815ba459b51ec7f938c.png [681c197f6567450399c55398b5b800f7.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/2f4e04d841544ae6bf511b14f26d8434.png [cb9208269ecb463c9f375e95cef42158.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/36df2f51317e48bbb50c53a18486c0bc.png [45c3471929934e9e85d23a9d1762732e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/42147530c82f4dad89e3ddbcb8ce7c25.png
还没有评论,来说两句吧...