HiveSQL查询优化

在讨论Hive优化之前,我们先介绍两个关键字‘EXPLAIN’和‘EXPLAIN EXTENDED’,在碰到复杂或者执行效率很低的查询时,在查询与居前加上这个关键字,此时这个查询不会执行,而是返回hive是如何去执行这个查询,hive会把查询分解成很多stage。理解这些stage可以帮助我们优化查询。

举个栗子:

EXPLAIN SELECT length(str_tel), str_tel FROM tmp_dataclean.tbl_fin_combine_protest ORDER BY length(str_tel);

1.优化之分区

对数据进行分区,可以将数据以一种符合逻辑的方式进行组织(比如分层存储),同时极大提高查询性能。

在创建表的时候,根据后续查询需求用'PARTITIOED BY( )'对数据进行合理的分区,下面我们根据‘province’和‘city’进行对数据进行分区分区:

CREATE TABLE IF NOT EXISTS tbl_per_info (no INT, name STRING, sex STRING, age INT, salary FLAOT) PARTITIONED BY (province STRING, city STRING);
'province'和'city'已经在文件目录名称中了,不需要再把这些值放在目录下的文件中,浪费空间。当我们需要查询在山东德州的员工个人信息时:
SELECT * FROM tbl_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值