union:将多个结果集合并为一个结果集,结果集去重。
union all:将多个结果集合并为一个结果集,结果集不去重。
本次测试将四份数据去重合并,其中一份数据使用了grouping sets,所以这份数据是单独进行了一次reduce。
两种写法:一种是采用union的方法,另一种是采用union all再进行group by的方法(将不去重的结果集利用group by去重)。
接下来直接看执行逻辑图和map、reduce个数。
第一种写法union:
第二种写法union all再group by:
首先从执行逻辑图就可以看出来union all再group by转换为mr后的执行步骤要少了两次reduce。再对比map、reduce个数,map个数是一样