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