Skew Join与Left Semi Join相关
来源:互联网 发布:汇丰银行软件开发中心 编辑:程序博客网 时间:2024/06/05 16:30
Skew Join
真实数据中数据倾斜是一定的, hadoop 中默认是使用
hive.exec.reducers.bytes.per.reducer = 1000000000
也就是每个节点的reduce 默认是处理1G大小的数据,如果你的join 操作也产生了数据倾斜,那么你可以在hive 中设定
set hive.optimize.skewjoin = true;
set hive.skewjoin.key = skew_key_threshold (default = 100000)
hive 在运行的时候没有办法判断哪个key 会产生多大的倾斜,所以使用这个参数控制倾斜的阈值,如果超过这个值,新的值会发送给那些还没有达到的reduce, 一般可以设置成你
(处理的总记录数/reduce个数)的2-4倍都可以接受.
倾斜是经常会存在的,一般select 的层数超过2层,翻译成执行计划多于3个以上的mapreduce job 都很容易产生倾斜,建议每次运行比较复杂的sql 之前都可以设一下这个参数. 如果你不知道设置多少,可以就按官方默认的1个reduce 只处理1G 的算法,那么 skew_key_threshold = 1G/平均行长. 或者默认直接设成250000000 (差不多算平均行长4个字节)
Left Semi Join
hive 中没有in/exist 这样的子句,所以需要将这种类型的子句转成left semi join. left semi join 是只传递表的join key给map 阶段 , 如果key 足够小还是执行map join, 如果不是则还是common join.
真实数据中数据倾斜是一定的, hadoop 中默认是使用
hive.exec.reducers.bytes.per.reducer = 1000000000
也就是每个节点的reduce 默认是处理1G大小的数据,如果你的join 操作也产生了数据倾斜,那么你可以在hive 中设定
set hive.optimize.skewjoin = true;
set hive.skewjoin.key = skew_key_threshold (default = 100000)
hive 在运行的时候没有办法判断哪个key 会产生多大的倾斜,所以使用这个参数控制倾斜的阈值,如果超过这个值,新的值会发送给那些还没有达到的reduce, 一般可以设置成你
(处理的总记录数/reduce个数)的2-4倍都可以接受.
倾斜是经常会存在的,一般select 的层数超过2层,翻译成执行计划多于3个以上的mapreduce job 都很容易产生倾斜,建议每次运行比较复杂的sql 之前都可以设一下这个参数. 如果你不知道设置多少,可以就按官方默认的1个reduce 只处理1G 的算法,那么 skew_key_threshold = 1G/平均行长. 或者默认直接设成250000000 (差不多算平均行长4个字节)
Left Semi Join
hive 中没有in/exist 这样的子句,所以需要将这种类型的子句转成left semi join. left semi join 是只传递表的join key给map 阶段 , 如果key 足够小还是执行map join, 如果不是则还是common join.
0 0
- Skew Join与Left Semi Join相关
- Skew Join与Left Semi Join相关
- hive left semi join
- hive left semi join
- hive中的LEFT SEMI JOIN
- Hive.LEFT SEMI JOIN子句
- hive中的LEFT SEMI JOIN
- hive left semi join讲解
- semi join 与 anti join
- JOIN与LEFT JOIN
- HIVE 中内连接(JOIN ON)与LEFT SEMI JOIN查询结果不一致的分析
- HIVE 中内连接(JOIN ON)与LEFT SEMI JOIN查询结果不一致的分析
- HIVE 中内连接(JOIN ON) 与 LEFT SEMI JOIN 分析
- HIVE 中内连接(JOIN ON) 与 LEFT SEMI JOIN 分析
- Hive 中的 LEFT SEMI JOIN 与 JOIN ON 的前世今生
- 【转】hive中的LEFT SEMI JOIN
- Hive中的LEFT SEMI JOIN<转>
- inner join 与 left join
- WordPress 核心文件 functions.php 源码分析
- 安卓自定义View进阶-Matrix详解
- Apache Phoenix基本操作(1)
- CentOS 7 安装Nginx
- 疑难杂症
- Skew Join与Left Semi Join相关
- 微信开源PhxSQL:高可用、强一致的MySQL集群
- iOS和Android的app界面设计规范
- 使用自己开发好的JDBC框架来升级客户关系管理系统模块
- 【杭电oj1754】I Hate It
- 简单介绍一下solr的几种应用模式
- hbase命令 写数据到hbase表
- POJ 1061 扩展欧几里得
- 用Canvas模拟苹果画图工具