写点什么

Bigdata 毕业设计

作者:Pyel
  • 2022 年 8 月 21 日
    上海
  • 本文字数:1645 字

    阅读完需:约 5 分钟

毕设


题目一:分析一条 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:


@@ -0,0 +1,30 @@SELECT count(*)FROM (       SELECT DISTINCT         c_last_name,         c_first_name,         d_date       FROM store_sales, date_dim, customer       WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk         AND store_sales.ss_customer_sk = customer.c_customer_sk         AND d_month_seq BETWEEN 1200 AND 1200 + 11       INTERSECT       SELECT DISTINCT         c_last_name,         c_first_name,         d_date       FROM catalog_sales, date_dim, customer       WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk         AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk         AND d_month_seq BETWEEN 1200 AND 1200 + 11       INTERSECT       SELECT DISTINCT         c_last_name,         c_first_name,         d_date       FROM web_sales, date_dim, customer       WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk         AND web_sales.ws_bill_customer_sk = customer.c_customer_sk         AND d_month_seq BETWEEN 1200 AND 1200 + 11     ) hot_custLIMIT 100
复制代码


执行图如下:



优化规则:

optimizer rules


--org.apache.spark.sql.catalyst.optimizer.CollapseProjectorg.apache.spark.sql.catalyst.optimizer.ColumnPruningorg.apache.spark.sql.catalyst.optimizer.ConstantFoldingorg.apache.spark.sql.catalyst.optimizer.EliminateLimitsorg.apache.spark.sql.catalyst.optimizer.InferFiltersFromConstraintsorg.apache.spark.sql.catalyst.optimizer.PushDownLeftSemiAntiJoinorg.apache.spark.sql.catalyst.optimizer.PushDownPredicatesorg.apache.spark.sql.catalyst.optimizer.RemoveNoopOperatorsorg.apache.spark.sql.catalyst.optimizer.ReorderJoinorg.apache.spark.sql.catalyst.optimizer.ReplaceDistinctWithAggregateorg.apache.spark.sql.catalyst.optimizer.ReplaceIntersectWithSemiJoinorg.apache.spark.sql.catalyst.optimizer.RewritePredicateSubquery
复制代码


  • PushDownPredicates

  • PushDownPredicates 规则是一个重要的规则,它将谓词向下推至最接近数据源的位置,也就是通过将计算移动至数据源端,以此减少了 Spark 加载与计算的数据量,实现优化。一个谓词定义了一个逻辑条件,其结果是真或假,用于过滤数据源中的行。PushDownPredicates 规则实际上包含了其他三个规则:CombineFilters、PushPredicateThroughNonJoin 和 PushPredicateThroughJoin。

  • ReorderJoin

  • ReorderJoin 规则对 join 进行了重新排序,并将所有的条件下推到 join 中,使得过滤操作可以尽早发生。实则是贪心算法,基于代价的优化器,Spark 会根据 join 的成本选择代价最小的 join 操作,也就是有多个表 join,cbo 优化会按特定的顺序进行 join。多表连接顺序优化算法使用了动态规划寻找最优 join 顺序,优势在于动态规划算法能够求得整个搜索空间中最优解,而缺点在于当联接表数量增加时,算法需要搜索的空间增加的非常快,计算最优联接顺序代价很高。


题目二:架构设计题


你是某互联网公司的大数据平台架构师,请设计一套基于 Lambda 架构的数据平台架构,要求尽可能多的把课程中涉及的组件添加到该架构图中。并描述 Lambda 架构的优缺点,要求不少于 300 字。


设计


Lambda 架构优点:


  • 架构简单

  • 很好地结合了离线批处理和实时流处理的优点

  • 稳定

  • 实时计算成本可控

  • 离线数据易于修正


Lambda 架构缺点:


  • 实时与离线数据结果很难保持一致

  • 部署复杂,且需要维护两套系统,运维成本高


用户头像

Pyel

关注

还未添加个人签名 2015.01.29 加入

还未添加个人简介

评论

发布
暂无评论
Bigdata 毕业设计_Pyel_InfoQ写作社区