Bigdata 毕业设计
毕设
题目一:分析一条 TPCDS SQL
分析一条 TPCDS SQL(请基于 Spark 3.1.1 版本解答)
运行该 SQL,如 q38,并截图该 SQL 的 SQL 执行图
该 SQL 用到了哪些优化规则(optimizer rules)
请各用不少于 200 字描述其中的两条优化规则
SQL 从中任意选择一条:
https://github.com/apache/spark/tree/master/sql/core/src/test/resources/tpcds
设计
运行该 SQL,q38:
执行图如下:
优化规则:
optimizer rules
PushDownPredicates
PushDownPredicates 规则是一个重要的规则,它将谓词向下推至最接近数据源的位置,也就是通过将计算移动至数据源端,以此减少了 Spark 加载与计算的数据量,实现优化。一个谓词定义了一个逻辑条件,其结果是真或假,用于过滤数据源中的行。PushDownPredicates 规则实际上包含了其他三个规则:CombineFilters、PushPredicateThroughNonJoin 和 PushPredicateThroughJoin。
ReorderJoin
ReorderJoin 规则对 join 进行了重新排序,并将所有的条件下推到 join 中,使得过滤操作可以尽早发生。实则是贪心算法,基于代价的优化器,Spark 会根据 join 的成本选择代价最小的 join 操作,也就是有多个表 join,cbo 优化会按特定的顺序进行 join。多表连接顺序优化算法使用了动态规划寻找最优 join 顺序,优势在于动态规划算法能够求得整个搜索空间中最优解,而缺点在于当联接表数量增加时,算法需要搜索的空间增加的非常快,计算最优联接顺序代价很高。
题目二:架构设计题
你是某互联网公司的大数据平台架构师,请设计一套基于 Lambda 架构的数据平台架构,要求尽可能多的把课程中涉及的组件添加到该架构图中。并描述 Lambda 架构的优缺点,要求不少于 300 字。
设计
Lambda 架构优点:
架构简单
很好地结合了离线批处理和实时流处理的优点
稳定
实时计算成本可控
离线数据易于修正
Lambda 架构缺点:
实时与离线数据结果很难保持一致
部署复杂,且需要维护两套系统,运维成本高
评论