017-Hadoop Hive sql语法详解7-去重排序、数据倾斜
2017-11-25 18:34
751 查看
一、数据去重排序
1.1、去重
distinct与group by
尽量避免使用distinct进行排重,特别是大表操作,用group by代替
1.2、排序优化
只有order by产生的结果是全局有序的,可以根据实际场景进行选择排序。
1、order by 实现全局排序,一个reduce实现,由于不能并发执行,所以效率偏低
2、sort by实现部分有序,单个reduce输出的结果是有序的,效率高,通常和distribute by关键字一起使用
(distribute by 关键字可以指定map到reduce端的分发key)
3、cluster by col1等价于 distribute by col1 sort by col1但不能指定排序规则
单一reduce的记录数与平均记录数差异过大,通常可能达到30倍甚至更多。最长时长远大于平均时长。
1.1、去重
distinct与group by
尽量避免使用distinct进行排重,特别是大表操作,用group by代替
-- 不建议 select DISTINCT key from a -- 建议 select key from a group by key
1.2、排序优化
只有order by产生的结果是全局有序的,可以根据实际场景进行选择排序。
1、order by 实现全局排序,一个reduce实现,由于不能并发执行,所以效率偏低
2、sort by实现部分有序,单个reduce输出的结果是有序的,效率高,通常和distribute by关键字一起使用
(distribute by 关键字可以指定map到reduce端的分发key)
3、cluster by col1等价于 distribute by col1 sort by col1但不能指定排序规则
二、数据倾斜
任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大。单一reduce的记录数与平均记录数差异过大,通常可能达到30倍甚至更多。最长时长远大于平均时长。
相关文章推荐
- 016-Hadoop Hive sql语法详解6-job输入输出优化、数据剪裁、减少job数、动态分区
- 009-Hadoop Hive sql语法详解4-DQL 操作:数据查询SQL-select、join、union、udtf
- Hadoop Hive sql语法详解4--DQL 操作:数据查询SQL
- Hadoop Hive sql语法详解--DQL 操作:数据查询SQL(4)
- Hadoop Hive sql语法详解4--DQL 操作:数据查询SQL
- Hadoop Hive sql语法详解4--DQL 操作:数据查询SQL
- Hadoop Hive sql语法详解
- Hadoop Hive sql语法详解3--DML 操作:元数据存储(3)
- Hadoop Hive sql语法详解
- Hadoop Hive sql语法详解2-修改表结构
- Hadoop Hive sql语法详解
- Hadoop Hive sql语法详解3--DML 操作:元数据存储
- Hadoop Hive sql语法详解
- Hadoop Hive sql语法详解
- Hadoop Hive sql语法详解
- Hadoop Hive sql语法详解
- Hadoop Hive sql语法详解3--DML 操作:元数据存储
- Hadoop Hive sql 语法详解
- Hadoop Hive sql语法详解
- Hadoop Hive sql 语法详解