Hive学习之连接查询优化(一)

      Hive为连接查询提供了一系列的优化方法,包括优化Hive的查询执行计划以改进连接查询的效率和减少用户提示的使用等。Hive可以自动识别很多用例并自动优化它们,Hive在0.11版本中对下面的情况改进了优化器:

  •  连接查询的一端放进内存中,在新的优化器中:
    • 放进内存的一端在内存中以哈希表存在
    • 只有比较大的表需要扫描
    • 事实表在内存中有较小的足迹
  • 星型模式连接
  • 在许多用例中不再需要用户提示
  • 优化器自动优化map连接

星型连接优化

      星型模式是用于决策支持系统或者数据仓库的一个简单模式,在该模式中事件存在于大的事实表中,较小的支持表(维度表)用于描述数据。TPC DS(TPC Benchmark™DS (TPC-DS): 新的决策支持标准)是该模式的一个例子。它是典型的零售数据仓库模型,其中事件是销售,典型的维度是销售的日期,销售的时间,或者采购方的人口统计,典型的查询聚集并过滤事实表根据维度表中的属性。下面是星型模式的一个列子:

Select count(*) cnt
From store_sales ss
     join household_demographics hd on (ss.ss_hdemo_sk = hd.hd_demo_sk)
     join time_dim t on (ss.ss_sold_time_sk = t.t_time_sk)
     join store s on (s.s_store_sk = ss.ss_store_sk)
Where
     t.t_hour = 8
     t.t_minute >= 30
     hd.hd_dep_count = 2
order by cnt;

      Hive支持map连接,而map连接非常适合星型模式的场景,至少对维度足够小可以放进内存的情况。在Hive-0.11之前,map连接可以通过优化器提示调用:

你可能感兴趣的:(Hive,勤奋的Hive)