【发布时间】:2020-12-04 00:24:11
【问题描述】:
我需要优化 Hive 中的查询,在该查询中我使用分区但使用两个不同的分区来连接表:
select *
from k1_core_dim_dl_tables.dl_item_dim a inner
join k1_repl_dl_tables.repl_managed_sku b on b.mds_fam_id = a.mds_fam_id
join k1_core_dim_dl_tables.dl_store_club_dim c on c.store_nbr = b.store_nbr inner
join k1_core_dim_dl_tables.dl_calendar_dim d on current_date = d.cal_dt
group by c.state_prov_cd, a.upc_nbr, a.item_nbr, a.signing_desc, a.dept_nbr, b.store_nbr, c.store_nm, d.cal_wk_nbr
limit 10;
分区是:
对于 k1_core_dim_dl_tables.dl_item_dim、k1_repl_dl_tables.repl_managed_sku 和 k1_core_dim_dl_tables.dl_store_club_dim,分区 op_cmpny_cd=WMT-K1
对于 k1_core_dim_dl_tables.dl_calendar_dim,分区 geo_region_cd=K1
【问题讨论】:
-
请您澄清您要实现的目标,因为不清楚您提供的分区信息与 SQL 语句的相关性是什么。您怎么知道 SQL 语句还没有达到应有的优化程度?仅当您有一个 WHERE 子句过滤定义分区逻辑的列时,分区才有意义
-
@NickW 我正在运行此查询,使用 Hue 从数据湖中提取数据,有人告诉我,为了减少 Hue 处理此查询所需的时间,我应该使用分区以获得更好的性能。这是我第一次使用分区,所以对我来说还没有多大意义。