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

怎么做自已的网站今天上海重大新闻事件

怎么做自已的网站,今天上海重大新闻事件,中山建网站最好的公司,网站查询功能是用什么程序做的在 Hive SQL 优化中,AST(抽象语法树) 和 HBO(基于历史的优化) 是两种高级优化手段,能够显著提升复杂查询的执行效率。以下是它们的核心原理、应用场景及具体示例: 一、AST(Abstract …

在 Hive SQL 优化中,AST(抽象语法树)HBO(基于历史的优化) 是两种高级优化手段,能够显著提升复杂查询的执行效率。以下是它们的核心原理、应用场景及具体示例:


一、AST(Abstract Syntax Tree,抽象语法树)

1. 什么是 AST?
  • 定义:AST 是 SQL 语句的树形结构表示,由 Hive 解析器生成,反映查询的语法逻辑(如 SELECT、JOIN、WHERE 等操作的嵌套关系)。

  • 作用:Hive 优化器通过遍历和修改 AST,重构查询逻辑,生成更高效的计算路径。

2. AST 优化示例

假设原始 SQL 如下:

SELECT * 
FROM (SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id
) t 
WHERE total > 1000;
  • 原始 AST

    Project (输出字段)
    └─ Filter (total > 1000)└─ SubQueryAlias (t)└─ Aggregate (GROUP BY user_id)└─ TableScan (orders)

  • 优化后 AST(谓词下推):

    Project (输出字段)
    └─ Aggregate (GROUP BY user_id + HAVING total > 1000)└─ TableScan (orders)

    优化效果:将过滤条件 total > 1000 从外层下推到聚合操作中,减少中间数据传输。

3. 常见 AST 优化手段
  • 谓词下推(Predicate Pushdown):将 WHERE 条件提前到数据扫描阶段。

  • 常量折叠(Constant Folding):提前计算常量表达式(如 WHERE age > 30+2 优化为 age > 32)。

  • 子查询扁平化:将多层子查询合并为单层操作(如将嵌套 SELECT 转为 JOIN)。


二、HBO(History-Based Optimization,基于历史的优化)

1. 什么是 HBO?
  • 定义:HBO 通过收集历史执行数据(如统计信息、执行计划性能)动态优化后续查询,属于 基于成本的优化(CBO) 的扩展。

  • 核心依赖

    • 统计信息表大小、列基数(Cardinality)、数据分布(Histogram)等。

    • 执行历史历史任务的资源消耗、Shuffle 数据量、执行时长等。

2. HBO 优化流程
  1. 统计信息收集

    -- 收集表级统计信息(行数、文件大小)
    ANALYZE TABLE orders COMPUTE STATISTICS;
    ​
    -- 收集列级统计信息(最大值、最小值、基数)
    ANALYZE TABLE orders COMPUTE STATISTICS FOR COLUMNS user_id, amount;
  2. 优化器决策

    • 根据统计信息选择最优 JOIN 顺序(小表优先)。

    • 自动选择 Map Join 或 Reduce Join。

  3. 动态调优

    • 根据历史任务的倾斜情况,自动添加随机前缀解决数据倾斜。

3. HBO 应用示例

场景:两表 JOIN(orders 大表,users 小表)。

  • 无 HBO:默认使用 Reduce Join,引发大量 Shuffle。

  • 启用 HBO

    • 统计信息显示 users 表仅 10MB,触发 Map Join

    • 直接将小表广播到所有 Mapper,避免 Shuffle。

    -- 启用自动 Map Join
    SET hive.auto.convert.join=true;
    SET hive.mapjoin.smalltable.filesize=25000000; -- 小表阈值设为25MB
4. HBO 与 CBO 的关系
  • CBO(Cost-Based Optimization):基于统计信息估算执行计划成本(如 CPU、I/O、网络开销),选择最优方案。

  • HBO:在 CBO 基础上,进一步结合历史执行数据(如实际资源消耗)进行动态调整,属于 CBO 的增强版。


三、AST 与 HBO 的综合优化案例

问题 SQL
SELECT a.user_id, a.total 
FROM (SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id
) a 
JOIN (SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id
) b ON a.user_id = b.user_id 
WHERE a.total > 1000;
优化步骤
  1. AST 分析

    • 识别到两个相同的子查询 ab

    • 优化器将子查询合并为 公共表达式(CTE)

    WITH order_summary AS (SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id
    )
    SELECT a.user_id, a.total 
    FROM order_summary a 
    JOIN order_summary b ON a.user_id = b.user_id 
    WHERE a.total > 1000;
  2. HBO 调优

    • 统计信息显示 orders 表的 user_id 基数较高(10万+),且 total 列存在倾斜。

    • 优化器自动为 GROUP BY user_id 添加 DISTRIBUTE BY 分桶,避免 Reducer 长尾。

    SET hive.groupby.skewindata=true; -- 自动处理倾斜

四、总结

优化技术核心原理典型场景
AST重构查询逻辑,减少计算层级和数据传输量多层嵌套子查询、冗余条件过滤
HBO基于统计信息和历史执行数据动态优化执行计划JOIN 顺序选择、数据倾斜自动处理

最终效果

  • 通过 AST 优化,查询执行计划的 Operator 数量减少 40%;

  • 通过 HBO 自动选择 Map Join,Shuffle 数据量降低 90%。

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

相关文章:

  • b2b外贸网站大全优化大师下载电脑版
  • 网站建设响应技术网站建网站建设网站
  • 企业代码查询平台上海有什么seo公司
  • 建设一个网站需要上海网站seo招聘
  • 南京网站建设公司大全中国十大外贸平台
  • 南通高端网站建设机构上海seo网站优化软件
  • 定制网站开发报价seo排名优化培训网站
  • 青岛网站建设官网常用的网络营销方法及效果
  • 档案互动网站建设百度推广一般要多少钱
  • 做电子外贸网站建设百度 营销中心
  • 动态网站开发选课系统实训报告什么是网络营销平台
  • wordpress 主页显示多图沙洋县seo优化排名价格
  • 一家专门做男人的网站网络营销的四大要素
  • 网站支付宝接口代码夸克搜索
  • 网站制作易捷网络百度经验首页官网
  • python搭建服务器网站优化要做哪些
  • 怎样优化网站app免费网页设计制作网站
  • 纪检监察网站建设背景怎样在百度上注册自己的店铺
  • 做暧电影在线观看网站关键词优化分析工具
  • 公司做网站提供资料阳东网站seo
  • 广州学做网站广州seo网站推广
  • wordpress 滚动宁波seo公司
  • 自助建设手机网站深圳全网信息流推广公司
  • 网站建设放入什么会计科目市场调研报告怎么做
  • 国内精美网站郑州网站开发公司
  • 建设外贸企业网站百度推广怎么推
  • 中国空间站最新视频优化大师电脑版
  • 怎么做新网站上线通稿cfa三级和一二级关系大吗
  • 中山做网站公司哪家好seo网站排名厂商定制
  • 苏州网站公司2023年新闻热点事件