当前位置: 首页 > wzjs >正文

期末成绩怎么做网站海南科技职业大学教务网络管理系统

期末成绩怎么做网站,海南科技职业大学教务网络管理系统,做网店好还是自己建网站好,南昌地宝网租房个人房源在优化多层嵌套子查询的 Hive SQL 时,除了常见的谓词下推、分区裁剪、WITH 子句复用和动态分区优化,还可以通过 抽象语法树(AST)分析 和 基于历史的优化(HBO) 进一步优化。以下是结合所有技术方向的完整方案…

在优化多层嵌套子查询的 Hive SQL 时,除了常见的谓词下推、分区裁剪、WITH 子句复用和动态分区优化,还可以通过 抽象语法树(AST)分析基于历史的优化(HBO) 进一步优化。以下是结合所有技术方向的完整方案:


一、传统优化手段补充

1. 谓词下推(Predicate Pushdown)
  • 原理:将过滤条件尽可能下推到靠近数据源的子查询中,减少中间结果集。

  • 示例

    -- 优化前(外层过滤)
    SELECT * FROM (SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id
    ) t1 WHERE total > 1000;
    ​
    -- 优化后(内层过滤)
    SELECT user_id, SUM(amount) AS total 
    FROM orders 
    GROUP BY user_id
    HAVING SUM(amount) > 1000;  -- 减少数据传递
2. 分区裁剪(Partition Pruning)
  • 原理:利用分区键过滤无关分区,减少数据扫描量。

  • 关键配置:确保分区键在 WHERE 条件中显式使用,并启用 hive.optimize.ppd=true

3. WITH 子句复用(CTE)
  • 原理:避免重复计算相同子查询。

    WITH user_summary AS (SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id
    )
    SELECT a.user_id, a.total 
    FROM user_summary a 
    JOIN user_summary b ON a.user_id = b.user_id;

4. 动态分区优化
  • 配置:避免小文件问题。

    SET hive.exec.dynamic.partition=true;
    SET hive.exec.dynamic.partition.mode=nonstrict;
    SET hive.exec.max.dynamic.partitions=10000;


二、AST(抽象语法树)分析优化

1. 解析执行计划
  • 操作:使用 EXPLAINEXPLAIN FORMATTED 查看 SQL 的 AST 和执行计划。

    EXPLAIN FORMATTED
    SELECT * FROM (SELECT user_id, COUNT(*) FROM orders GROUP BY user_id
    ) t1 WHERE t1.user_id > 1000;

  • 关注点

    • Operator 层级:检查是否有冗余的 SELECTGROUP BY 操作。

    • 数据流路径:识别未下推的谓词或未裁剪的分区。

2. 优化 AST 结构
  • 场景:多层嵌套子查询可能被解析为多个 TableScanReduceSink 操作。

  • 优化方法

    • 扁平化嵌套查询:将多层子查询合并为单层操作。

      -- 优化前(三层嵌套)
      SELECT * FROM (SELECT * FROM (SELECT * FROM orders) t1) t2;
      ​
      -- 优化后(单层扫描)
      SELECT * FROM orders;
    • 消除冗余操作:移除无意义的 SELECT * 或重复聚合。

3. 手动重写复杂逻辑
  • 示例:将 IN 子查询转换为 JOIN

    -- 优化前(IN 子查询)
    SELECT * FROM users 
    WHERE user_id IN (SELECT user_id FROM orders);
    ​
    -- 优化后(JOIN)
    SELECT users.* 
    FROM users JOIN orders ON users.user_id = orders.user_id;

三、HBO(基于历史的优化)

1. 统计信息收集
  • 原理:Hive 通过统计信息(表大小、列基数)优化执行计划。

  • 操作

    ANALYZE TABLE orders COMPUTE STATISTICS;              -- 表级统计
    ANALYZE TABLE orders COMPUTE STATISTICS FOR COLUMNS;  -- 列级统计
  • 作用:优化器根据统计信息选择更优的 Join 顺序或聚合策略。

2. 基于成本的优化(CBO)
  • 启用配置

    SET hive.cbo.enable=true;
    SET hive.compute.query.using.stats=true;
  • 优化场景

    • Join 顺序调整:小表优先 Join,减少数据 Shuffle 量。

    • Map Join 自动选择:根据小表统计信息自动触发 Map Join。

3. 历史执行日志分析
  • 工具:结合 Hive 日志或第三方工具(如 Apache Atlas、Tez UI)分析历史任务。

  • 优化方向

    • 资源倾斜:针对 GROUP BYJOIN 的倾斜 Key 添加随机前缀。

    • 长尾任务:调整 hive.exec.reducers.bytes.per.reducer 控制 Reducer 数量。


四、综合优化案例

问题 SQL
SELECT *
FROM (SELECT user_id, COUNT(*) AS cnt FROM (SELECT * FROM orders WHERE dt BETWEEN '2023-01-01' AND '2023-01-31') t1 GROUP BY user_id
) t2 
WHERE cnt > 100
ORDER BY cnt DESC 
LIMIT 10;
优化步骤
  1. AST 分析:发现外层 WHERE cnt > 100 可下推到内层 HAVING

  2. 统计信息:收集 orders 表的 dt 分区和 user_id 基数信息。

  3. 逻辑重构

    WITH filtered_orders AS (SELECT user_id FROM orders WHERE dt BETWEEN '2023-01-01' AND '2023-01-31'  -- 分区裁剪
    )
    SELECT user_id, COUNT(*) AS cnt 
    FROM filtered_orders 
    GROUP BY user_id 
    HAVING cnt > 100  -- 谓词下推
    ORDER BY cnt DESC 
    LIMIT 10;

  4. HBO 调优:根据历史执行数据,增加 Reducer 并行度。

    SET mapreduce.job.reduces=20;


五、总结

优化维度具体手段
传统优化谓词下推、分区裁剪、CTE 复用、动态分区
AST 分析扁平化嵌套、消除冗余 Operator、手动重写逻辑
HBO统计信息收集、CBO 调优、历史日志分析

最终通过 减少数据扫描量、降低计算复杂度、利用统计信息 实现性能提升。例如:

  • 通过 AST 分析将执行计划的 Operator 从 15 层减少到 8 层;

  • 结合 HBO 自动选择 Map Join,使 Shuffle 数据量减少 70%。

http://www.dtcms.com/wzjs/559353.html

相关文章:

  • 电子商务网站建设主管的策划案个人网站模板之家
  • 美食网站建设项目预算微信网站开发价格
  • 导航网站的好处万域网站建设
  • 网站底部的备案号商城系统管理
  • 百度网站官网入口网站免费模块
  • 工信部网站备案查询 手机重庆网页制作设计营销
  • 建设旅游网站缺点迅雷下载磁力天堂
  • 模拟建设官方网站奉贤建设机械网站
  • 建设网站用图片需要版权苏州技术馆网站建设
  • 门户网站设计思路钉钉专业版多少钱
  • 网站建设费属于什么税目做网站赚钱需要多少人手
  • 怎么做qq网站网站设置不发送消息怎么设置回来
  • 营销型网站的基础建设做年会的网站
  • 4414站长平台北京营销型网站公司
  • php网站目录系统保网微商城官网
  • 如何用服务器代替空间做网站微网站建设价格对比
  • 免费网站开发1369免费版街景地图
  • 网站常州建设网站建设方案 doc
  • 电子商务网站建设试题及答案wordpress编辑页面打不开
  • netcore做网站北京网站建设推广服务信息
  • 网站建设 软件有哪些企业类展厅设计公司
  • 陕西省住建厅网站官网咸阳网站制作公司
  • 德令哈网站建设公司企业管理培训课程免费视频
  • 最专业的企业营销型网站建设价格网络推广一个月工资多少
  • 一流的赣州网站建设企业网站设计策划
  • 广东网站建设微信官网开发新闻发布
  • 求一个做健身餐的网站做网站违法吗
  • 怎样做百度推广网站网站建设的报价单
  • 阳信网站建设网站策划工作条件
  • 苏州木渎做网站公司婚庆公司加盟