1.小表放在join操作的左边
Hive操作会将join左边的表放在缓存中,然后去遍历右边的表,将小的表放在左边会极大减少内存的消耗
2.使用STREAMTABLE注释
将大表使用STREAMTABLE标注出来,从而减少内存的消耗。
SELECT /*+ STREAMTABLE(a) */ a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1)
Hive操作会将join左边的表放在缓存中,然后去遍历右边的表,将小的表放在左边会极大减少内存的消耗
将大表使用STREAMTABLE标注出来,从而减少内存的消耗。
SELECT /*+ STREAMTABLE(a) */ a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1)