You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2017/12/12 00:00:17 UTC

[19/51] [partial] hive git commit: HIVE-13567 : Enable auto-gather column stats by default (Zoltan Haindrich, Pengcheng Xiong via Ashutosh Chauhan)

http://git-wip-us.apache.org/repos/asf/hive/blob/3bbc24d2/ql/src/test/results/clientpositive/llap/explainanalyze_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/explainanalyze_2.q.out b/ql/src/test/results/clientpositive/llap/explainanalyze_2.q.out
index 7db3b13..55f3a78 100644
--- a/ql/src/test/results/clientpositive/llap/explainanalyze_2.q.out
+++ b/ql/src/test/results/clientpositive/llap/explainanalyze_2.q.out
@@ -629,20 +629,20 @@ Stage-0
     Stage-1
       Map 1 llap
       File Output Operator [FS_10]
-        Merge Join Operator [MERGEJOIN_15] (rows=253/480 width=190)
+        Merge Join Operator [MERGEJOIN_15] (rows=382/480 width=95)
           Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col0","_col1"]
-        <-Select Operator [SEL_5] (rows=230/242 width=14)
+        <-Select Operator [SEL_5] (rows=242/242 width=4)
             Output:["_col0"]
-            Filter Operator [FIL_14] (rows=230/242 width=14)
+            Filter Operator [FIL_14] (rows=242/242 width=4)
               predicate:key is not null
-              TableScan [TS_3] (rows=242/242 width=14)
-                default@tab,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
-        <-Select Operator [SEL_2] (rows=230/242 width=190)
+              TableScan [TS_3] (rows=242/242 width=4)
+                default@tab,s3,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+        <-Select Operator [SEL_2] (rows=242/242 width=95)
             Output:["_col0","_col1"]
-            Filter Operator [FIL_13] (rows=230/242 width=190)
+            Filter Operator [FIL_13] (rows=242/242 width=95)
               predicate:key is not null
-              TableScan [TS_0] (rows=242/242 width=190)
-                default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
+              TableScan [TS_0] (rows=242/242 width=95)
+                default@tab,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
 
 PREHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab s3 on s1.key=s3.key join tab s2 on s1.value=s2.value
 PREHOOK: type: QUERY
@@ -671,36 +671,34 @@ Stage-0
     Stage-1
       Reducer 2 llap
       File Output Operator [FS_16]
-        Select Operator [SEL_15] (rows=278/1166 width=3)
-          Output:["_col0","_col1"]
-          Merge Join Operator [MERGEJOIN_27] (rows=278/1166 width=3)
-            Conds:RS_12._col2=RS_13._col1(Inner),Output:["_col1","_col2"]
-          <-Map 1 [SIMPLE_EDGE] llap
-            SHUFFLE [RS_12]
-              PartitionCols:_col2
-              Merge Join Operator [MERGEJOIN_25] (rows=253/480 width=3)
-                Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col1","_col2"]
-              <-Select Operator [SEL_5] (rows=218/242 width=179)
-                  Output:["_col0","_col1"]
-                  Filter Operator [FIL_23] (rows=218/242 width=179)
-                    predicate:(key is not null and value is not null)
-                    TableScan [TS_3] (rows=242/242 width=179)
-                      default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
-              <-Select Operator [SEL_2] (rows=230/242 width=3)
-                  Output:["_col0"]
-                  Filter Operator [FIL_22] (rows=230/242 width=3)
-                    predicate:key is not null
-                    TableScan [TS_0] (rows=242/242 width=3)
-                      default@tab,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
-          <-Map 4 [SIMPLE_EDGE] llap
-            SHUFFLE [RS_13]
-              PartitionCols:_col1
-              Select Operator [SEL_8] (rows=230/242 width=175)
-                Output:["_col1"]
-                Filter Operator [FIL_24] (rows=230/242 width=175)
-                  predicate:value is not null
-                  TableScan [TS_6] (rows=242/242 width=175)
-                    default@tab,s2,Tbl:COMPLETE,Col:NONE,Output:["value"]
+        Merge Join Operator [MERGEJOIN_27] (rows=604/1166 width=95)
+          Conds:RS_12._col1=RS_13._col1(Inner),Output:["_col0","_col1"]
+        <-Map 1 [SIMPLE_EDGE] llap
+          SHUFFLE [RS_12]
+            PartitionCols:_col1
+            Merge Join Operator [MERGEJOIN_25] (rows=382/480 width=95)
+              Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col0","_col1"]
+            <-Select Operator [SEL_5] (rows=242/242 width=4)
+                Output:["_col0"]
+                Filter Operator [FIL_23] (rows=242/242 width=4)
+                  predicate:key is not null
+                  TableScan [TS_3] (rows=242/242 width=4)
+                    default@tab,s3,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+            <-Select Operator [SEL_2] (rows=242/242 width=95)
+                Output:["_col0","_col1"]
+                Filter Operator [FIL_22] (rows=242/242 width=95)
+                  predicate:(key is not null and value is not null)
+                  TableScan [TS_0] (rows=242/242 width=95)
+                    default@tab,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+        <-Map 4 [SIMPLE_EDGE] llap
+          SHUFFLE [RS_13]
+            PartitionCols:_col1
+            Select Operator [SEL_8] (rows=242/242 width=91)
+              Output:["_col1"]
+              Filter Operator [FIL_24] (rows=242/242 width=91)
+                predicate:value is not null
+                TableScan [TS_6] (rows=242/242 width=91)
+                  default@tab,s2,Tbl:COMPLETE,Col:COMPLETE,Output:["value"]
 
 PREHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab2 s3 on s1.key=s3.key
 PREHOOK: type: QUERY
@@ -730,20 +728,20 @@ Stage-0
     Stage-1
       Map 1 llap
       File Output Operator [FS_10]
-        Merge Join Operator [MERGEJOIN_15] (rows=253/480 width=190)
+        Merge Join Operator [MERGEJOIN_15] (rows=382/480 width=95)
           Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col0","_col1"]
-        <-Select Operator [SEL_5] (rows=230/242 width=14)
+        <-Select Operator [SEL_5] (rows=242/242 width=4)
             Output:["_col0"]
-            Filter Operator [FIL_14] (rows=230/242 width=14)
+            Filter Operator [FIL_14] (rows=242/242 width=4)
               predicate:key is not null
-              TableScan [TS_3] (rows=242/242 width=14)
-                default@tab2,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
-        <-Select Operator [SEL_2] (rows=230/242 width=190)
+              TableScan [TS_3] (rows=242/242 width=4)
+                default@tab2,s3,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+        <-Select Operator [SEL_2] (rows=242/242 width=95)
             Output:["_col0","_col1"]
-            Filter Operator [FIL_13] (rows=230/242 width=190)
+            Filter Operator [FIL_13] (rows=242/242 width=95)
               predicate:key is not null
-              TableScan [TS_0] (rows=242/242 width=190)
-                default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
+              TableScan [TS_0] (rows=242/242 width=95)
+                default@tab,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
 
 PREHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab2 s3 on s1.key=s3.key join tab2 s2 on s1.value=s2.value
 PREHOOK: type: QUERY
@@ -776,36 +774,34 @@ Stage-0
     Stage-1
       Reducer 2 llap
       File Output Operator [FS_16]
-        Select Operator [SEL_15] (rows=278/1166 width=3)
-          Output:["_col0","_col1"]
-          Merge Join Operator [MERGEJOIN_27] (rows=278/1166 width=3)
-            Conds:RS_12._col2=RS_13._col1(Inner),Output:["_col1","_col2"]
-          <-Map 1 [SIMPLE_EDGE] llap
-            SHUFFLE [RS_12]
-              PartitionCols:_col2
-              Merge Join Operator [MERGEJOIN_25] (rows=253/480 width=3)
-                Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col1","_col2"]
-              <-Select Operator [SEL_5] (rows=218/242 width=179)
-                  Output:["_col0","_col1"]
-                  Filter Operator [FIL_23] (rows=218/242 width=179)
-                    predicate:(key is not null and value is not null)
-                    TableScan [TS_3] (rows=242/242 width=179)
-                      default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
-              <-Select Operator [SEL_2] (rows=230/242 width=3)
-                  Output:["_col0"]
-                  Filter Operator [FIL_22] (rows=230/242 width=3)
-                    predicate:key is not null
-                    TableScan [TS_0] (rows=242/242 width=3)
-                      default@tab2,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
-          <-Map 4 [SIMPLE_EDGE] llap
-            SHUFFLE [RS_13]
-              PartitionCols:_col1
-              Select Operator [SEL_8] (rows=230/242 width=175)
-                Output:["_col1"]
-                Filter Operator [FIL_24] (rows=230/242 width=175)
-                  predicate:value is not null
-                  TableScan [TS_6] (rows=242/242 width=175)
-                    default@tab2,s2,Tbl:COMPLETE,Col:NONE,Output:["value"]
+        Merge Join Operator [MERGEJOIN_27] (rows=604/1166 width=95)
+          Conds:RS_12._col1=RS_13._col1(Inner),Output:["_col0","_col1"]
+        <-Map 1 [SIMPLE_EDGE] llap
+          SHUFFLE [RS_12]
+            PartitionCols:_col1
+            Merge Join Operator [MERGEJOIN_25] (rows=382/480 width=95)
+              Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col0","_col1"]
+            <-Select Operator [SEL_5] (rows=242/242 width=4)
+                Output:["_col0"]
+                Filter Operator [FIL_23] (rows=242/242 width=4)
+                  predicate:key is not null
+                  TableScan [TS_3] (rows=242/242 width=4)
+                    default@tab2,s3,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+            <-Select Operator [SEL_2] (rows=242/242 width=95)
+                Output:["_col0","_col1"]
+                Filter Operator [FIL_22] (rows=242/242 width=95)
+                  predicate:(key is not null and value is not null)
+                  TableScan [TS_0] (rows=242/242 width=95)
+                    default@tab,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+        <-Map 4 [SIMPLE_EDGE] llap
+          SHUFFLE [RS_13]
+            PartitionCols:_col1
+            Select Operator [SEL_8] (rows=242/242 width=91)
+              Output:["_col1"]
+              Filter Operator [FIL_24] (rows=242/242 width=91)
+                predicate:value is not null
+                TableScan [TS_6] (rows=242/242 width=91)
+                  default@tab2,s2,Tbl:COMPLETE,Col:COMPLETE,Output:["value"]
 
 PREHOOK: query: select count(*) from (select s1.key as key, s1.value as value from tab s1 join tab s3 on s1.key=s3.key
 UNION  ALL
@@ -857,43 +853,43 @@ Stage-0
           Output:["_col0"],aggregations:["count()"]
         <-Reducer 3 [CUSTOM_SIMPLE_EDGE] llap
           PARTITION_ONLY_SHUFFLE [RS_22]
-            Merge Join Operator [MERGEJOIN_38] (rows=531/1646 width=3)
+            Merge Join Operator [MERGEJOIN_38] (rows=1009/1646 width=8)
               Conds:Union 2._col0=RS_19._col0(Inner)
             <-Map 7 [SIMPLE_EDGE] llap
               SHUFFLE [RS_19]
                 PartitionCols:_col0
-                Select Operator [SEL_17] (rows=475/500 width=3)
+                Select Operator [SEL_17] (rows=500/500 width=4)
                   Output:["_col0"]
-                  Filter Operator [FIL_35] (rows=475/500 width=3)
+                  Filter Operator [FIL_35] (rows=500/500 width=4)
                     predicate:key is not null
-                    TableScan [TS_15] (rows=500/500 width=3)
-                      default@tab_part,b,Tbl:COMPLETE,Col:NONE,Output:["key"]
+                    TableScan [TS_15] (rows=500/500 width=4)
+                      default@tab_part,b,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
             <-Union 2 [SIMPLE_EDGE]
               <-Map 1 [CONTAINS] llap
                 Reduce Output Operator [RS_18]
                   PartitionCols:_col0
-                  Merge Join Operator [MERGEJOIN_36] (rows=253/480 width=3)
+                  Merge Join Operator [MERGEJOIN_36] (rows=382/480 width=4)
                     Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col0"]
-                  <-Select Operator [SEL_5] (rows=230/242 width=3)
+                  <-Select Operator [SEL_5] (rows=242/242 width=4)
                       Output:["_col0"]
-                      Filter Operator [FIL_33] (rows=230/242 width=3)
+                      Filter Operator [FIL_33] (rows=242/242 width=4)
                         predicate:key is not null
-                        TableScan [TS_3] (rows=242/242 width=3)
-                          default@tab,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
-                  <-Select Operator [SEL_2] (rows=230/242 width=3)
+                        TableScan [TS_3] (rows=242/242 width=4)
+                          default@tab,s3,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+                  <-Select Operator [SEL_2] (rows=242/242 width=4)
                       Output:["_col0"]
-                      Filter Operator [FIL_32] (rows=230/242 width=3)
+                      Filter Operator [FIL_32] (rows=242/242 width=4)
                         predicate:key is not null
-                        TableScan [TS_0] (rows=242/242 width=3)
+                        TableScan [TS_0] (rows=242/242 width=4)
                           Output:["key"]
               <-Map 6 [CONTAINS] llap
                 Reduce Output Operator [RS_18]
                   PartitionCols:_col0
-                  Select Operator [SEL_12] (rows=230/242 width=3)
+                  Select Operator [SEL_12] (rows=242/242 width=4)
                     Output:["_col0"]
-                    Filter Operator [FIL_34] (rows=230/242 width=3)
+                    Filter Operator [FIL_34] (rows=242/242 width=4)
                       predicate:key is not null
-                      TableScan [TS_10] (rows=242/242 width=3)
+                      TableScan [TS_10] (rows=242/242 width=4)
                         Output:["key"]
 
 PREHOOK: query: select count(*) from (select s1.key as key, s1.value as value from tab s1 join tab s3 on s1.key=s3.key join tab s2 on s1.value=s2.value
@@ -946,60 +942,58 @@ Stage-0
           Output:["_col0"],aggregations:["count()"]
         <-Reducer 4 [CUSTOM_SIMPLE_EDGE] llap
           PARTITION_ONLY_SHUFFLE [RS_28]
-            Merge Join Operator [MERGEJOIN_50] (rows=558/3768 width=3)
+            Merge Join Operator [MERGEJOIN_50] (rows=1368/3768 width=8)
               Conds:Union 3._col0=RS_25._col0(Inner)
             <-Map 9 [SIMPLE_EDGE] llap
               SHUFFLE [RS_25]
                 PartitionCols:_col0
-                Select Operator [SEL_23] (rows=475/500 width=3)
+                Select Operator [SEL_23] (rows=500/500 width=4)
                   Output:["_col0"]
-                  Filter Operator [FIL_46] (rows=475/500 width=3)
+                  Filter Operator [FIL_46] (rows=500/500 width=4)
                     predicate:key is not null
-                    TableScan [TS_21] (rows=500/500 width=3)
-                      default@tab_part,b,Tbl:COMPLETE,Col:NONE,Output:["key"]
+                    TableScan [TS_21] (rows=500/500 width=4)
+                      default@tab_part,b,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
             <-Union 3 [SIMPLE_EDGE]
               <-Map 8 [CONTAINS] llap
                 Reduce Output Operator [RS_24]
                   PartitionCols:_col0
-                  Select Operator [SEL_18] (rows=230/242 width=3)
+                  Select Operator [SEL_18] (rows=242/242 width=4)
                     Output:["_col0"]
-                    Filter Operator [FIL_45] (rows=230/242 width=3)
+                    Filter Operator [FIL_45] (rows=242/242 width=4)
                       predicate:key is not null
-                      TableScan [TS_16] (rows=242/242 width=3)
+                      TableScan [TS_16] (rows=242/242 width=4)
                         Output:["key"]
               <-Reducer 2 [CONTAINS] llap
                 Reduce Output Operator [RS_24]
                   PartitionCols:_col0
-                  Select Operator [SEL_15] (rows=278/1166 width=3)
-                    Output:["_col0"]
-                    Merge Join Operator [MERGEJOIN_49] (rows=278/1166 width=3)
-                      Conds:RS_12._col2=RS_13._col1(Inner),Output:["_col1"]
-                    <-Map 1 [SIMPLE_EDGE] llap
-                      SHUFFLE [RS_12]
-                        PartitionCols:_col2
-                        Merge Join Operator [MERGEJOIN_47] (rows=253/480 width=3)
-                          Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col1","_col2"]
-                        <-Select Operator [SEL_5] (rows=218/242 width=179)
-                            Output:["_col0","_col1"]
-                            Filter Operator [FIL_43] (rows=218/242 width=179)
-                              predicate:(key is not null and value is not null)
-                              TableScan [TS_3] (rows=242/242 width=179)
-                                default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
-                        <-Select Operator [SEL_2] (rows=230/242 width=3)
-                            Output:["_col0"]
-                            Filter Operator [FIL_42] (rows=230/242 width=3)
-                              predicate:key is not null
-                              TableScan [TS_0] (rows=242/242 width=3)
-                                default@tab,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
-                    <-Map 7 [SIMPLE_EDGE] llap
-                      SHUFFLE [RS_13]
-                        PartitionCols:_col1
-                        Select Operator [SEL_8] (rows=230/242 width=175)
-                          Output:["_col1"]
-                          Filter Operator [FIL_44] (rows=230/242 width=175)
-                            predicate:value is not null
-                            TableScan [TS_6] (rows=242/242 width=175)
-                              default@tab,s2,Tbl:COMPLETE,Col:NONE,Output:["value"]
+                  Merge Join Operator [MERGEJOIN_49] (rows=604/1166 width=4)
+                    Conds:RS_12._col1=RS_13._col1(Inner),Output:["_col0"]
+                  <-Map 1 [SIMPLE_EDGE] llap
+                    SHUFFLE [RS_12]
+                      PartitionCols:_col1
+                      Merge Join Operator [MERGEJOIN_47] (rows=382/480 width=95)
+                        Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col0","_col1"]
+                      <-Select Operator [SEL_5] (rows=242/242 width=4)
+                          Output:["_col0"]
+                          Filter Operator [FIL_43] (rows=242/242 width=4)
+                            predicate:key is not null
+                            TableScan [TS_3] (rows=242/242 width=4)
+                              default@tab,s3,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+                      <-Select Operator [SEL_2] (rows=242/242 width=95)
+                          Output:["_col0","_col1"]
+                          Filter Operator [FIL_42] (rows=242/242 width=95)
+                            predicate:(key is not null and value is not null)
+                            TableScan [TS_0] (rows=242/242 width=95)
+                              default@tab,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                  <-Map 7 [SIMPLE_EDGE] llap
+                    SHUFFLE [RS_13]
+                      PartitionCols:_col1
+                      Select Operator [SEL_8] (rows=242/242 width=91)
+                        Output:["_col1"]
+                        Filter Operator [FIL_44] (rows=242/242 width=91)
+                          predicate:value is not null
+                          TableScan [TS_6] (rows=242/242 width=91)
+                            default@tab,s2,Tbl:COMPLETE,Col:COMPLETE,Output:["value"]
 
 PREHOOK: query: CREATE TABLE a(key STRING, value STRING) STORED AS TEXTFILE
 PREHOOK: type: CREATETABLE
@@ -1113,20 +1107,23 @@ Plan optimized by CBO.
 
 Vertex dependency in root stage
 Map 1 <- Union 2 (CONTAINS)
-Map 13 <- Union 14 (CONTAINS)
-Map 15 <- Union 14 (CONTAINS)
-Map 16 <- Union 14 (CONTAINS)
-Map 19 <- Union 20 (CONTAINS)
-Map 21 <- Union 20 (CONTAINS)
-Map 22 <- Union 20 (CONTAINS)
-Map 23 <- Union 20 (CONTAINS)
-Map 6 <- Union 2 (CONTAINS)
-Reducer 11 <- Map 10 (SIMPLE_EDGE), Union 14 (SIMPLE_EDGE)
-Reducer 12 <- Map 17 (SIMPLE_EDGE), Reducer 11 (SIMPLE_EDGE), Union 5 (CONTAINS)
-Reducer 3 <- Map 7 (SIMPLE_EDGE), Union 2 (SIMPLE_EDGE)
-Reducer 4 <- Map 10 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE), Union 5 (CONTAINS)
-Reducer 8 <- Map 18 (SIMPLE_EDGE), Map 7 (SIMPLE_EDGE)
-Reducer 9 <- Reducer 8 (SIMPLE_EDGE), Union 20 (SIMPLE_EDGE), Union 5 (CONTAINS)
+Map 16 <- Union 17 (CONTAINS)
+Map 18 <- Union 17 (CONTAINS)
+Map 19 <- Union 17 (CONTAINS)
+Map 22 <- Union 23 (CONTAINS)
+Map 24 <- Union 23 (CONTAINS)
+Map 25 <- Union 23 (CONTAINS)
+Map 26 <- Union 23 (CONTAINS)
+Map 9 <- Union 2 (CONTAINS)
+Reducer 11 <- Map 10 (SIMPLE_EDGE), Map 21 (SIMPLE_EDGE)
+Reducer 12 <- Reducer 11 (SIMPLE_EDGE), Union 23 (SIMPLE_EDGE), Union 5 (CONTAINS)
+Reducer 14 <- Map 13 (SIMPLE_EDGE), Union 17 (SIMPLE_EDGE)
+Reducer 15 <- Map 20 (SIMPLE_EDGE), Reducer 14 (SIMPLE_EDGE), Union 5 (CONTAINS)
+Reducer 3 <- Map 10 (SIMPLE_EDGE), Union 2 (SIMPLE_EDGE)
+Reducer 4 <- Map 13 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE), Union 5 (CONTAINS)
+Reducer 6 <- Union 5 (CUSTOM_SIMPLE_EDGE)
+Reducer 7 <- Union 5 (CUSTOM_SIMPLE_EDGE)
+Reducer 8 <- Union 5 (CUSTOM_SIMPLE_EDGE)
 
 Stage-5
   Stats Work{}
@@ -1136,193 +1133,243 @@ Stage-5
         Stage-4
           Dependency Collection{}
             Stage-3
-              Union 5
-              <-Reducer 12 [CONTAINS] llap
-                File Output Operator [FS_75]
-                  table:{"name:":"default.a"}
-                  Select Operator [SEL_44] (rows=2682/5421 width=178)
-                    Output:["_col0","_col1"]
-                    Merge Join Operator [MERGEJOIN_122] (rows=2682/5421 width=178)
-                      Conds:RS_41._col1=RS_42._col0(Inner),Output:["_col1","_col4"]
-                    <-Map 17 [SIMPLE_EDGE] llap
-                      SHUFFLE [RS_42]
-                        PartitionCols:_col0
-                        Select Operator [SEL_37] (rows=500/500 width=178)
-                          Output:["_col0","_col1"]
-                          Filter Operator [FIL_112] (rows=500/500 width=178)
-                            predicate:key is not null
-                            TableScan [TS_35] (rows=500/500 width=178)
-                              default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
-                    <-Reducer 11 [SIMPLE_EDGE] llap
-                      SHUFFLE [RS_41]
-                        PartitionCols:_col1
-                        Merge Join Operator [MERGEJOIN_121] (rows=1658/2097 width=87)
-                          Conds:Union 14._col0=RS_39._col1(Inner),Output:["_col1"]
-                        <-Map 10 [SIMPLE_EDGE] llap
-                          SHUFFLE [RS_39]
+              Reducer 6 llap
+              File Output Operator [FS_5]
+                Group By Operator [GBY_3] (rows=1/1 width=880)
+                  Output:["_col0","_col1"],aggregations:["compute_stats(VALUE._col0, 'hll')","compute_stats(VALUE._col2, 'hll')"]
+                <-Union 5 [CUSTOM_SIMPLE_EDGE]
+                  <-Reducer 12 [CONTAINS] llap
+                    File Output Operator [FS_75]
+                      table:{"name:":"default.a"}
+                      Select Operator [SEL_72] (rows=192/820 width=175)
+                        Output:["_col0","_col1"]
+                        Merge Join Operator [MERGEJOIN_124] (rows=192/820 width=175)
+                          Conds:RS_69._col1=Union 23._col0(Inner),Output:["_col0","_col3"]
+                        <-Reducer 11 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_69]
                             PartitionCols:_col1
-                            Select Operator [SEL_34] (rows=500/500 width=178)
-                              Output:["_col0","_col1"]
-                              Filter Operator [FIL_111] (rows=500/500 width=178)
-                                predicate:(key is not null and value is not null)
-                                TableScan [TS_11] (rows=500/500 width=178)
-                                  default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
-                        <-Union 14 [SIMPLE_EDGE]
-                          <-Map 13 [CONTAINS] llap
-                            Reduce Output Operator [RS_38]
+                            Merge Join Operator [MERGEJOIN_123] (rows=39/115 width=264)
+                              Conds:RS_66._col0=RS_67._col0(Inner),Output:["_col0","_col1","_col3"]
+                            <-Map 10 [SIMPLE_EDGE] llap
+                              SHUFFLE [RS_66]
+                                PartitionCols:_col0
+                                Select Operator [SEL_10] (rows=25/25 width=175)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_106] (rows=25/25 width=175)
+                                    predicate:(key is not null and value is not null)
+                                    TableScan [TS_8] (rows=25/25 width=175)
+                                      default@src1,x,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                            <-Map 21 [SIMPLE_EDGE] llap
+                              SHUFFLE [RS_67]
+                                PartitionCols:_col0
+                                Select Operator [SEL_51] (rows=25/25 width=175)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_114] (rows=25/25 width=175)
+                                    predicate:key is not null
+                                    TableScan [TS_49] (rows=25/25 width=175)
+                                      default@src1,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                        <-Union 23 [SIMPLE_EDGE]
+                          <-Map 22 [CONTAINS] llap
+                            Reduce Output Operator [RS_70]
                               PartitionCols:_col0
-                              Select Operator [SEL_23] (rows=25/25 width=89)
+                              Select Operator [SEL_54] (rows=25/25 width=89)
                                 Output:["_col0"]
-                                Filter Operator [FIL_108] (rows=25/25 width=89)
+                                Filter Operator [FIL_115] (rows=25/25 width=89)
                                   predicate:value is not null
-                                  TableScan [TS_21] (rows=25/25 width=89)
+                                  TableScan [TS_52] (rows=25/25 width=89)
                                     Output:["value"]
-                          <-Map 15 [CONTAINS] llap
-                            Reduce Output Operator [RS_38]
+                          <-Map 24 [CONTAINS] llap
+                            Reduce Output Operator [RS_70]
                               PartitionCols:_col0
-                              Select Operator [SEL_26] (rows=500/500 width=91)
+                              Select Operator [SEL_57] (rows=500/500 width=91)
                                 Output:["_col0"]
-                                Filter Operator [FIL_109] (rows=500/500 width=91)
+                                Filter Operator [FIL_116] (rows=500/500 width=91)
                                   predicate:value is not null
-                                  TableScan [TS_24] (rows=500/500 width=91)
+                                  TableScan [TS_55] (rows=500/500 width=91)
                                     Output:["value"]
-                          <-Map 16 [CONTAINS] llap
-                            Reduce Output Operator [RS_38]
+                          <-Map 25 [CONTAINS] llap
+                            Reduce Output Operator [RS_70]
                               PartitionCols:_col0
-                              Select Operator [SEL_30] (rows=500/500 width=91)
+                              Select Operator [SEL_61] (rows=500/500 width=91)
                                 Output:["_col0"]
-                                Filter Operator [FIL_110] (rows=500/500 width=91)
+                                Filter Operator [FIL_117] (rows=500/500 width=91)
                                   predicate:value is not null
-                                  TableScan [TS_28] (rows=500/500 width=91)
+                                  TableScan [TS_59] (rows=500/500 width=91)
                                     Output:["value"]
-                File Output Operator [FS_77]
-                  table:{"name:":"default.b"}
-                   Please refer to the previous Select Operator [SEL_44]
-                File Output Operator [FS_79]
-                  table:{"name:":"default.c"}
-                   Please refer to the previous Select Operator [SEL_44]
-              <-Reducer 4 [CONTAINS] llap
-                File Output Operator [FS_75]
-                  table:{"name:":"default.a"}
-                  Select Operator [SEL_20] (rows=67/170 width=177)
-                    Output:["_col0","_col1"]
-                    Merge Join Operator [MERGEJOIN_120] (rows=67/170 width=177)
-                      Conds:RS_17._col1=RS_18._col0(Inner),Output:["_col1","_col4"]
-                    <-Map 10 [SIMPLE_EDGE] llap
-                      SHUFFLE [RS_18]
-                        PartitionCols:_col0
-                        Select Operator [SEL_13] (rows=500/500 width=178)
-                          Output:["_col0","_col1"]
-                          Filter Operator [FIL_107] (rows=500/500 width=178)
-                            predicate:key is not null
-                             Please refer to the previous TableScan [TS_11]
-                    <-Reducer 3 [SIMPLE_EDGE] llap
-                      SHUFFLE [RS_17]
-                        PartitionCols:_col1
-                        Merge Join Operator [MERGEJOIN_119] (rows=42/108 width=86)
-                          Conds:Union 2._col0=RS_15._col1(Inner),Output:["_col1"]
-                        <-Map 7 [SIMPLE_EDGE] llap
-                          SHUFFLE [RS_15]
-                            PartitionCols:_col1
-                            Select Operator [SEL_10] (rows=25/25 width=175)
-                              Output:["_col0","_col1"]
-                              Filter Operator [FIL_106] (rows=25/25 width=175)
-                                predicate:(key is not null and value is not null)
-                                TableScan [TS_8] (rows=25/25 width=175)
-                                  default@src1,x,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
-                        <-Union 2 [SIMPLE_EDGE]
-                          <-Map 1 [CONTAINS] llap
-                            Reduce Output Operator [RS_14]
-                              PartitionCols:_col0
-                              Select Operator [SEL_2] (rows=25/25 width=89)
-                                Output:["_col0"]
-                                Filter Operator [FIL_104] (rows=25/25 width=89)
-                                  predicate:value is not null
-                                  TableScan [TS_0] (rows=25/25 width=89)
-                                    Output:["value"]
-                          <-Map 6 [CONTAINS] llap
-                            Reduce Output Operator [RS_14]
+                          <-Map 26 [CONTAINS] llap
+                            Reduce Output Operator [RS_70]
                               PartitionCols:_col0
-                              Select Operator [SEL_5] (rows=500/500 width=91)
+                              Select Operator [SEL_64] (rows=500/500 width=91)
                                 Output:["_col0"]
-                                Filter Operator [FIL_105] (rows=500/500 width=91)
+                                Filter Operator [FIL_118] (rows=500/500 width=91)
                                   predicate:value is not null
-                                  TableScan [TS_3] (rows=500/500 width=91)
+                                  TableScan [TS_62] (rows=500/500 width=91)
                                     Output:["value"]
-                File Output Operator [FS_77]
-                  table:{"name:":"default.b"}
-                   Please refer to the previous Select Operator [SEL_20]
-                File Output Operator [FS_79]
-                  table:{"name:":"default.c"}
-                   Please refer to the previous Select Operator [SEL_20]
-              <-Reducer 9 [CONTAINS] llap
-                File Output Operator [FS_75]
-                  table:{"name:":"default.a"}
-                  Select Operator [SEL_72] (rows=192/820 width=175)
-                    Output:["_col0","_col1"]
-                    Merge Join Operator [MERGEJOIN_124] (rows=192/820 width=175)
-                      Conds:RS_69._col1=Union 20._col0(Inner),Output:["_col0","_col3"]
-                    <-Reducer 8 [SIMPLE_EDGE] llap
-                      SHUFFLE [RS_69]
-                        PartitionCols:_col1
-                        Merge Join Operator [MERGEJOIN_123] (rows=39/115 width=264)
-                          Conds:RS_66._col0=RS_67._col0(Inner),Output:["_col0","_col1","_col3"]
-                        <-Map 7 [SIMPLE_EDGE] llap
-                          SHUFFLE [RS_66]
+                    Reduce Output Operator [RS_2]
+                      Select Operator [SEL_1] (rows=2941/6411 width=178)
+                        Output:["key","value"]
+                         Please refer to the previous Select Operator [SEL_72]
+                    File Output Operator [FS_77]
+                      table:{"name:":"default.b"}
+                       Please refer to the previous Select Operator [SEL_72]
+                    Reduce Output Operator [RS_2]
+                      Select Operator [SEL_1] (rows=2941/6411 width=178)
+                        Output:["key","value"]
+                         Please refer to the previous Select Operator [SEL_72]
+                    File Output Operator [FS_79]
+                      table:{"name:":"default.c"}
+                       Please refer to the previous Select Operator [SEL_72]
+                    Reduce Output Operator [RS_2]
+                      Select Operator [SEL_1] (rows=2941/6411 width=178)
+                        Output:["key","value"]
+                         Please refer to the previous Select Operator [SEL_72]
+                  <-Reducer 15 [CONTAINS] llap
+                    File Output Operator [FS_75]
+                      table:{"name:":"default.a"}
+                      Select Operator [SEL_44] (rows=2682/5421 width=178)
+                        Output:["_col0","_col1"]
+                        Merge Join Operator [MERGEJOIN_122] (rows=2682/5421 width=178)
+                          Conds:RS_41._col1=RS_42._col0(Inner),Output:["_col1","_col4"]
+                        <-Map 20 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_42]
                             PartitionCols:_col0
-                             Please refer to the previous Select Operator [SEL_10]
-                        <-Map 18 [SIMPLE_EDGE] llap
-                          SHUFFLE [RS_67]
+                            Select Operator [SEL_37] (rows=500/500 width=178)
+                              Output:["_col0","_col1"]
+                              Filter Operator [FIL_112] (rows=500/500 width=178)
+                                predicate:key is not null
+                                TableScan [TS_35] (rows=500/500 width=178)
+                                  default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                        <-Reducer 14 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_41]
+                            PartitionCols:_col1
+                            Merge Join Operator [MERGEJOIN_121] (rows=1658/2097 width=87)
+                              Conds:Union 17._col0=RS_39._col1(Inner),Output:["_col1"]
+                            <-Map 13 [SIMPLE_EDGE] llap
+                              SHUFFLE [RS_39]
+                                PartitionCols:_col1
+                                Select Operator [SEL_34] (rows=500/500 width=178)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_111] (rows=500/500 width=178)
+                                    predicate:(key is not null and value is not null)
+                                    TableScan [TS_11] (rows=500/500 width=178)
+                                      default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                            <-Union 17 [SIMPLE_EDGE]
+                              <-Map 16 [CONTAINS] llap
+                                Reduce Output Operator [RS_38]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_23] (rows=25/25 width=89)
+                                    Output:["_col0"]
+                                    Filter Operator [FIL_108] (rows=25/25 width=89)
+                                      predicate:value is not null
+                                      TableScan [TS_21] (rows=25/25 width=89)
+                                        Output:["value"]
+                              <-Map 18 [CONTAINS] llap
+                                Reduce Output Operator [RS_38]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_26] (rows=500/500 width=91)
+                                    Output:["_col0"]
+                                    Filter Operator [FIL_109] (rows=500/500 width=91)
+                                      predicate:value is not null
+                                      TableScan [TS_24] (rows=500/500 width=91)
+                                        Output:["value"]
+                              <-Map 19 [CONTAINS] llap
+                                Reduce Output Operator [RS_38]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_30] (rows=500/500 width=91)
+                                    Output:["_col0"]
+                                    Filter Operator [FIL_110] (rows=500/500 width=91)
+                                      predicate:value is not null
+                                      TableScan [TS_28] (rows=500/500 width=91)
+                                        Output:["value"]
+                    Reduce Output Operator [RS_2]
+                      Select Operator [SEL_1] (rows=2941/6411 width=178)
+                        Output:["key","value"]
+                         Please refer to the previous Select Operator [SEL_44]
+                    File Output Operator [FS_77]
+                      table:{"name:":"default.b"}
+                       Please refer to the previous Select Operator [SEL_44]
+                    Reduce Output Operator [RS_2]
+                      Select Operator [SEL_1] (rows=2941/6411 width=178)
+                        Output:["key","value"]
+                         Please refer to the previous Select Operator [SEL_44]
+                    File Output Operator [FS_79]
+                      table:{"name:":"default.c"}
+                       Please refer to the previous Select Operator [SEL_44]
+                    Reduce Output Operator [RS_2]
+                      Select Operator [SEL_1] (rows=2941/6411 width=178)
+                        Output:["key","value"]
+                         Please refer to the previous Select Operator [SEL_44]
+                  <-Reducer 4 [CONTAINS] llap
+                    File Output Operator [FS_75]
+                      table:{"name:":"default.a"}
+                      Select Operator [SEL_20] (rows=67/170 width=177)
+                        Output:["_col0","_col1"]
+                        Merge Join Operator [MERGEJOIN_120] (rows=67/170 width=177)
+                          Conds:RS_17._col1=RS_18._col0(Inner),Output:["_col1","_col4"]
+                        <-Map 13 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_18]
                             PartitionCols:_col0
-                            Select Operator [SEL_51] (rows=25/25 width=175)
+                            Select Operator [SEL_13] (rows=500/500 width=178)
                               Output:["_col0","_col1"]
-                              Filter Operator [FIL_114] (rows=25/25 width=175)
+                              Filter Operator [FIL_107] (rows=500/500 width=178)
                                 predicate:key is not null
-                                TableScan [TS_49] (rows=25/25 width=175)
-                                  default@src1,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
-                    <-Union 20 [SIMPLE_EDGE]
-                      <-Map 19 [CONTAINS] llap
-                        Reduce Output Operator [RS_70]
-                          PartitionCols:_col0
-                          Select Operator [SEL_54] (rows=25/25 width=89)
-                            Output:["_col0"]
-                            Filter Operator [FIL_115] (rows=25/25 width=89)
-                              predicate:value is not null
-                              TableScan [TS_52] (rows=25/25 width=89)
-                                Output:["value"]
-                      <-Map 21 [CONTAINS] llap
-                        Reduce Output Operator [RS_70]
-                          PartitionCols:_col0
-                          Select Operator [SEL_57] (rows=500/500 width=91)
-                            Output:["_col0"]
-                            Filter Operator [FIL_116] (rows=500/500 width=91)
-                              predicate:value is not null
-                              TableScan [TS_55] (rows=500/500 width=91)
-                                Output:["value"]
-                      <-Map 22 [CONTAINS] llap
-                        Reduce Output Operator [RS_70]
-                          PartitionCols:_col0
-                          Select Operator [SEL_61] (rows=500/500 width=91)
-                            Output:["_col0"]
-                            Filter Operator [FIL_117] (rows=500/500 width=91)
-                              predicate:value is not null
-                              TableScan [TS_59] (rows=500/500 width=91)
-                                Output:["value"]
-                      <-Map 23 [CONTAINS] llap
-                        Reduce Output Operator [RS_70]
-                          PartitionCols:_col0
-                          Select Operator [SEL_64] (rows=500/500 width=91)
-                            Output:["_col0"]
-                            Filter Operator [FIL_118] (rows=500/500 width=91)
-                              predicate:value is not null
-                              TableScan [TS_62] (rows=500/500 width=91)
-                                Output:["value"]
-                File Output Operator [FS_77]
-                  table:{"name:":"default.b"}
-                   Please refer to the previous Select Operator [SEL_72]
-                File Output Operator [FS_79]
-                  table:{"name:":"default.c"}
-                   Please refer to the previous Select Operator [SEL_72]
+                                 Please refer to the previous TableScan [TS_11]
+                        <-Reducer 3 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_17]
+                            PartitionCols:_col1
+                            Merge Join Operator [MERGEJOIN_119] (rows=42/108 width=86)
+                              Conds:Union 2._col0=RS_15._col1(Inner),Output:["_col1"]
+                            <-Map 10 [SIMPLE_EDGE] llap
+                              SHUFFLE [RS_15]
+                                PartitionCols:_col1
+                                 Please refer to the previous Select Operator [SEL_10]
+                            <-Union 2 [SIMPLE_EDGE]
+                              <-Map 1 [CONTAINS] llap
+                                Reduce Output Operator [RS_14]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_2] (rows=25/25 width=89)
+                                    Output:["_col0"]
+                                    Filter Operator [FIL_104] (rows=25/25 width=89)
+                                      predicate:value is not null
+                                      TableScan [TS_0] (rows=25/25 width=89)
+                                        Output:["value"]
+                              <-Map 9 [CONTAINS] llap
+                                Reduce Output Operator [RS_14]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_5] (rows=500/500 width=91)
+                                    Output:["_col0"]
+                                    Filter Operator [FIL_105] (rows=500/500 width=91)
+                                      predicate:value is not null
+                                      TableScan [TS_3] (rows=500/500 width=91)
+                                        Output:["value"]
+                    Reduce Output Operator [RS_2]
+                      Select Operator [SEL_1] (rows=2941/6411 width=178)
+                        Output:["key","value"]
+                         Please refer to the previous Select Operator [SEL_20]
+                    File Output Operator [FS_77]
+                      table:{"name:":"default.b"}
+                       Please refer to the previous Select Operator [SEL_20]
+                    Reduce Output Operator [RS_2]
+                      Select Operator [SEL_1] (rows=2941/6411 width=178)
+                        Output:["key","value"]
+                         Please refer to the previous Select Operator [SEL_20]
+                    File Output Operator [FS_79]
+                      table:{"name:":"default.c"}
+                       Please refer to the previous Select Operator [SEL_20]
+                    Reduce Output Operator [RS_2]
+                      Select Operator [SEL_1] (rows=2941/6411 width=178)
+                        Output:["key","value"]
+                         Please refer to the previous Select Operator [SEL_20]
+              Reducer 7 llap
+              File Output Operator [FS_5]
+                Group By Operator [GBY_3] (rows=1/1 width=880)
+                  Output:["_col0","_col1"],aggregations:["compute_stats(VALUE._col0, 'hll')","compute_stats(VALUE._col2, 'hll')"]
+                <- Please refer to the previous Union 5 [CUSTOM_SIMPLE_EDGE]
+              Reducer 8 llap
+              File Output Operator [FS_5]
+                Group By Operator [GBY_3] (rows=1/1 width=880)
+                  Output:["_col0","_col1"],aggregations:["compute_stats(VALUE._col0, 'hll')","compute_stats(VALUE._col2, 'hll')"]
+                <- Please refer to the previous Union 5 [CUSTOM_SIMPLE_EDGE]
 Stage-6
   Stats Work{}
     Stage-1
@@ -1412,26 +1459,29 @@ Plan optimized by CBO.
 
 Vertex dependency in root stage
 Map 1 <- Union 2 (CONTAINS)
-Map 10 <- Union 2 (CONTAINS)
-Map 17 <- Union 18 (CONTAINS)
-Map 22 <- Union 18 (CONTAINS)
-Map 23 <- Union 20 (CONTAINS)
-Map 26 <- Union 27 (CONTAINS)
-Map 33 <- Union 27 (CONTAINS)
-Map 34 <- Union 29 (CONTAINS)
-Map 35 <- Union 31 (CONTAINS)
-Reducer 12 <- Map 11 (SIMPLE_EDGE), Map 25 (SIMPLE_EDGE)
-Reducer 13 <- Reducer 12 (SIMPLE_EDGE), Reducer 32 (SIMPLE_EDGE), Union 8 (CONTAINS)
-Reducer 15 <- Map 14 (SIMPLE_EDGE), Reducer 21 (SIMPLE_EDGE)
-Reducer 16 <- Map 24 (SIMPLE_EDGE), Reducer 15 (SIMPLE_EDGE), Union 6 (CONTAINS)
-Reducer 19 <- Union 18 (SIMPLE_EDGE), Union 20 (CONTAINS)
-Reducer 21 <- Union 20 (SIMPLE_EDGE)
-Reducer 28 <- Union 27 (SIMPLE_EDGE), Union 29 (CONTAINS)
+Map 13 <- Union 2 (CONTAINS)
+Map 20 <- Union 21 (CONTAINS)
+Map 25 <- Union 21 (CONTAINS)
+Map 26 <- Union 23 (CONTAINS)
+Map 29 <- Union 30 (CONTAINS)
+Map 36 <- Union 30 (CONTAINS)
+Map 37 <- Union 32 (CONTAINS)
+Map 38 <- Union 34 (CONTAINS)
+Reducer 10 <- Reducer 9 (CUSTOM_SIMPLE_EDGE)
+Reducer 11 <- Reducer 9 (CUSTOM_SIMPLE_EDGE)
+Reducer 12 <- Reducer 9 (CUSTOM_SIMPLE_EDGE)
+Reducer 15 <- Map 14 (SIMPLE_EDGE), Map 28 (SIMPLE_EDGE)
+Reducer 16 <- Reducer 15 (SIMPLE_EDGE), Reducer 35 (SIMPLE_EDGE), Union 8 (CONTAINS)
+Reducer 18 <- Map 17 (SIMPLE_EDGE), Reducer 24 (SIMPLE_EDGE)
+Reducer 19 <- Map 27 (SIMPLE_EDGE), Reducer 18 (SIMPLE_EDGE), Union 6 (CONTAINS)
+Reducer 22 <- Union 21 (SIMPLE_EDGE), Union 23 (CONTAINS)
+Reducer 24 <- Union 23 (SIMPLE_EDGE)
 Reducer 3 <- Union 2 (SIMPLE_EDGE)
-Reducer 30 <- Union 29 (SIMPLE_EDGE), Union 31 (CONTAINS)
-Reducer 32 <- Union 31 (SIMPLE_EDGE)
-Reducer 4 <- Map 11 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE)
-Reducer 5 <- Map 14 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE), Union 6 (CONTAINS)
+Reducer 31 <- Union 30 (SIMPLE_EDGE), Union 32 (CONTAINS)
+Reducer 33 <- Union 32 (SIMPLE_EDGE), Union 34 (CONTAINS)
+Reducer 35 <- Union 34 (SIMPLE_EDGE)
+Reducer 4 <- Map 14 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE)
+Reducer 5 <- Map 17 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE), Union 6 (CONTAINS)
 Reducer 7 <- Union 6 (SIMPLE_EDGE), Union 8 (CONTAINS)
 Reducer 9 <- Union 8 (SIMPLE_EDGE)
 
@@ -1443,237 +1493,254 @@ Stage-5
         Stage-4
           Dependency Collection{}
             Stage-3
-              Reducer 9 llap
-              File Output Operator [FS_115]
-                table:{"name:":"default.a"}
-                Group By Operator [GBY_112] (rows=2941/319 width=178)
-                  Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
-                <-Union 8 [SIMPLE_EDGE]
-                  <-Reducer 13 [CONTAINS] llap
-                    Reduce Output Operator [RS_111]
-                      PartitionCols:_col0, _col1
-                      Select Operator [SEL_107] (rows=192/304 width=175)
-                        Output:["_col0","_col1"]
-                        Merge Join Operator [MERGEJOIN_164] (rows=192/304 width=175)
-                          Conds:RS_104._col1=RS_105._col1(Inner),Output:["_col0","_col3"]
-                        <-Reducer 12 [SIMPLE_EDGE] llap
-                          SHUFFLE [RS_104]
-                            PartitionCols:_col1
-                            Merge Join Operator [MERGEJOIN_163] (rows=39/115 width=264)
-                              Conds:RS_101._col0=RS_102._col0(Inner),Output:["_col0","_col1","_col3"]
-                            <-Map 11 [SIMPLE_EDGE] llap
-                              SHUFFLE [RS_101]
-                                PartitionCols:_col0
-                                Select Operator [SEL_14] (rows=25/25 width=175)
-                                  Output:["_col0","_col1"]
-                                  Filter Operator [FIL_146] (rows=25/25 width=175)
-                                    predicate:(key is not null and value is not null)
-                                    TableScan [TS_12] (rows=25/25 width=175)
-                                      default@src1,x,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
-                            <-Map 25 [SIMPLE_EDGE] llap
-                              SHUFFLE [RS_102]
-                                PartitionCols:_col0
-                                Select Operator [SEL_70] (rows=25/25 width=175)
-                                  Output:["_col0","_col1"]
-                                  Filter Operator [FIL_154] (rows=25/25 width=175)
-                                    predicate:key is not null
-                                    TableScan [TS_68] (rows=25/25 width=175)
-                                      default@src1,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
-                        <-Reducer 32 [SIMPLE_EDGE] llap
-                          SHUFFLE [RS_105]
-                            PartitionCols:_col1
-                            Select Operator [SEL_100] (rows=1525/319 width=178)
-                              Output:["_col1"]
-                              Group By Operator [GBY_99] (rows=1525/319 width=178)
-                                Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
-                              <-Union 31 [SIMPLE_EDGE]
-                                <-Map 35 [CONTAINS] llap
-                                  Reduce Output Operator [RS_98]
-                                    PartitionCols:_col1, _col0
-                                    Select Operator [SEL_94] (rows=500/500 width=178)
-                                      Output:["_col0","_col1"]
-                                      Filter Operator [FIL_158] (rows=500/500 width=178)
-                                        predicate:value is not null
-                                        TableScan [TS_92] (rows=500/500 width=178)
-                                          Output:["key","value"]
-                                <-Reducer 30 [CONTAINS] llap
-                                  Reduce Output Operator [RS_98]
-                                    PartitionCols:_col1, _col0
-                                    Select Operator [SEL_91] (rows=1025/319 width=178)
-                                      Output:["_col0","_col1"]
-                                      Group By Operator [GBY_90] (rows=1025/319 width=178)
-                                        Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
-                                      <-Union 29 [SIMPLE_EDGE]
-                                        <-Map 34 [CONTAINS] llap
-                                          Reduce Output Operator [RS_89]
-                                            PartitionCols:_col1, _col0
-                                            Select Operator [SEL_85] (rows=500/500 width=178)
-                                              Output:["_col0","_col1"]
-                                              Filter Operator [FIL_157] (rows=500/500 width=178)
-                                                predicate:value is not null
-                                                TableScan [TS_83] (rows=500/500 width=178)
-                                                  Output:["key","value"]
-                                        <-Reducer 28 [CONTAINS] llap
-                                          Reduce Output Operator [RS_89]
-                                            PartitionCols:_col1, _col0
-                                            Select Operator [SEL_82] (rows=525/319 width=178)
+              Reducer 10 llap
+              File Output Operator [FS_5]
+                Group By Operator [GBY_3] (rows=1/1 width=880)
+                  Output:["_col0","_col1"],aggregations:["compute_stats(VALUE._col0, 'hll')","compute_stats(VALUE._col2, 'hll')"]
+                <-Reducer 9 [CUSTOM_SIMPLE_EDGE] llap
+                  PARTITION_ONLY_SHUFFLE [RS_2]
+                    Select Operator [SEL_1] (rows=2941/319 width=178)
+                      Output:["key","value"]
+                      Group By Operator [GBY_112] (rows=2941/319 width=178)
+                        Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                      <-Union 8 [SIMPLE_EDGE]
+                        <-Reducer 16 [CONTAINS] llap
+                          Reduce Output Operator [RS_111]
+                            PartitionCols:_col0, _col1
+                            Select Operator [SEL_107] (rows=192/304 width=175)
+                              Output:["_col0","_col1"]
+                              Merge Join Operator [MERGEJOIN_164] (rows=192/304 width=175)
+                                Conds:RS_104._col1=RS_105._col1(Inner),Output:["_col0","_col3"]
+                              <-Reducer 15 [SIMPLE_EDGE] llap
+                                SHUFFLE [RS_104]
+                                  PartitionCols:_col1
+                                  Merge Join Operator [MERGEJOIN_163] (rows=39/115 width=264)
+                                    Conds:RS_101._col0=RS_102._col0(Inner),Output:["_col0","_col1","_col3"]
+                                  <-Map 14 [SIMPLE_EDGE] llap
+                                    SHUFFLE [RS_101]
+                                      PartitionCols:_col0
+                                      Select Operator [SEL_14] (rows=25/25 width=175)
+                                        Output:["_col0","_col1"]
+                                        Filter Operator [FIL_146] (rows=25/25 width=175)
+                                          predicate:(key is not null and value is not null)
+                                          TableScan [TS_12] (rows=25/25 width=175)
+                                            default@src1,x,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                                  <-Map 28 [SIMPLE_EDGE] llap
+                                    SHUFFLE [RS_102]
+                                      PartitionCols:_col0
+                                      Select Operator [SEL_70] (rows=25/25 width=175)
+                                        Output:["_col0","_col1"]
+                                        Filter Operator [FIL_154] (rows=25/25 width=175)
+                                          predicate:key is not null
+                                          TableScan [TS_68] (rows=25/25 width=175)
+                                            default@src1,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                              <-Reducer 35 [SIMPLE_EDGE] llap
+                                SHUFFLE [RS_105]
+                                  PartitionCols:_col1
+                                  Select Operator [SEL_100] (rows=1525/319 width=178)
+                                    Output:["_col1"]
+                                    Group By Operator [GBY_99] (rows=1525/319 width=178)
+                                      Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                    <-Union 34 [SIMPLE_EDGE]
+                                      <-Map 38 [CONTAINS] llap
+                                        Reduce Output Operator [RS_98]
+                                          PartitionCols:_col1, _col0
+                                          Select Operator [SEL_94] (rows=500/500 width=178)
+                                            Output:["_col0","_col1"]
+                                            Filter Operator [FIL_158] (rows=500/500 width=178)
+                                              predicate:value is not null
+                                              TableScan [TS_92] (rows=500/500 width=178)
+                                                Output:["key","value"]
+                                      <-Reducer 33 [CONTAINS] llap
+                                        Reduce Output Operator [RS_98]
+                                          PartitionCols:_col1, _col0
+                                          Select Operator [SEL_91] (rows=1025/319 width=178)
+                                            Output:["_col0","_col1"]
+                                            Group By Operator [GBY_90] (rows=1025/319 width=178)
+                                              Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                            <-Union 32 [SIMPLE_EDGE]
+                                              <-Map 37 [CONTAINS] llap
+                                                Reduce Output Operator [RS_89]
+                                                  PartitionCols:_col1, _col0
+                                                  Select Operator [SEL_85] (rows=500/500 width=178)
+                                                    Output:["_col0","_col1"]
+                                                    Filter Operator [FIL_157] (rows=500/500 width=178)
+                                                      predicate:value is not null
+                                                      TableScan [TS_83] (rows=500/500 width=178)
+                                                        Output:["key","value"]
+                                              <-Reducer 31 [CONTAINS] llap
+                                                Reduce Output Operator [RS_89]
+                                                  PartitionCols:_col1, _col0
+                                                  Select Operator [SEL_82] (rows=525/319 width=178)
+                                                    Output:["_col0","_col1"]
+                                                    Group By Operator [GBY_81] (rows=525/319 width=178)
+                                                      Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                                    <-Union 30 [SIMPLE_EDGE]
+                                                      <-Map 29 [CONTAINS] llap
+                                                        Reduce Output Operator [RS_80]
+                                                          PartitionCols:_col1, _col0
+                                                          Select Operator [SEL_73] (rows=25/25 width=175)
+                                                            Output:["_col0","_col1"]
+                                                            Filter Operator [FIL_155] (rows=25/25 width=175)
+                                                              predicate:value is not null
+                                                              TableScan [TS_71] (rows=25/25 width=175)
+                                                                Output:["key","value"]
+                                                      <-Map 36 [CONTAINS] llap
+                                                        Reduce Output Operator [RS_80]
+                                                          PartitionCols:_col1, _col0
+                                                          Select Operator [SEL_76] (rows=500/500 width=178)
+                                                            Output:["_col0","_col1"]
+                                                            Filter Operator [FIL_156] (rows=500/500 width=178)
+                                                              predicate:value is not null
+                                                              TableScan [TS_74] (rows=500/500 width=178)
+                                                                Output:["key","value"]
+                        <-Reducer 7 [CONTAINS] llap
+                          Reduce Output Operator [RS_111]
+                            PartitionCols:_col0, _col1
+                            Group By Operator [GBY_63] (rows=2749/309 width=178)
+                              Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                            <-Union 6 [SIMPLE_EDGE]
+                              <-Reducer 19 [CONTAINS] llap
+                                Reduce Output Operator [RS_62]
+                                  PartitionCols:_col0, _col1
+                                  Select Operator [SEL_58] (rows=2682/1056 width=178)
+                                    Output:["_col0","_col1"]
+                                    Merge Join Operator [MERGEJOIN_162] (rows=2682/1056 width=178)
+                                      Conds:RS_55._col2=RS_56._col0(Inner),Output:["_col2","_col5"]
+                                    <-Map 27 [SIMPLE_EDGE] llap
+                                      SHUFFLE [RS_56]
+                                        PartitionCols:_col0
+                                        Select Operator [SEL_51] (rows=500/500 width=178)
+                                          Output:["_col0","_col1"]
+                                          Filter Operator [FIL_152] (rows=500/500 width=178)
+                                            predicate:key is not null
+                                            TableScan [TS_49] (rows=500/500 width=178)
+                                              default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                                    <-Reducer 18 [SIMPLE_EDGE] llap
+                                      SHUFFLE [RS_55]
+                                        PartitionCols:_col2
+                                        Merge Join Operator [MERGEJOIN_161] (rows=1658/512 width=87)
+                                          Conds:RS_52._col1=RS_53._col1(Inner),Output:["_col2"]
+                                        <-Map 17 [SIMPLE_EDGE] llap
+                                          SHUFFLE [RS_53]
+                                            PartitionCols:_col1
+                                            Select Operator [SEL_48] (rows=500/500 width=178)
                                               Output:["_col0","_col1"]
-                                              Group By Operator [GBY_81] (rows=525/319 width=178)
+                                              Filter Operator [FIL_151] (rows=500/500 width=178)
+                                                predicate:(key is not null and value is not null)
+                                                TableScan [TS_15] (rows=500/500 width=178)
+                                                  default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                                        <-Reducer 24 [SIMPLE_EDGE] llap
+                                          SHUFFLE [RS_52]
+                                            PartitionCols:_col1
+                                            Select Operator [SEL_45] (rows=1025/319 width=178)
+                                              Output:["_col1"]
+                                              Group By Operator [GBY_44] (rows=1025/319 width=178)
                                                 Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
-                                              <-Union 27 [SIMPLE_EDGE]
+                                              <-Union 23 [SIMPLE_EDGE]
                                                 <-Map 26 [CONTAINS] llap
-                                                  Reduce Output Operator [RS_80]
+                                                  Reduce Output Operator [RS_43]
                                                     PartitionCols:_col1, _col0
-                                                    Select Operator [SEL_73] (rows=25/25 width=175)
+                                                    Select Operator [SEL_39] (rows=500/500 width=178)
                                                       Output:["_col0","_col1"]
-                                                      Filter Operator [FIL_155] (rows=25/25 width=175)
+                                                      Filter Operator [FIL_150] (rows=500/500 width=178)
                                                         predicate:value is not null
-                                                        TableScan [TS_71] (rows=25/25 width=175)
+                                                        TableScan [TS_37] (rows=500/500 width=178)
                                                           Output:["key","value"]
-                                                <-Map 33 [CONTAINS] llap
-                                                  Reduce Output Operator [RS_80]
+                                                <-Reducer 22 [CONTAINS] llap
+                                                  Reduce Output Operator [RS_43]
                                                     PartitionCols:_col1, _col0
-                                                    Select Operator [SEL_76] (rows=500/500 width=178)
+                                                    Select Operator [SEL_36] (rows=525/319 width=178)
                                                       Output:["_col0","_col1"]
-                                                      Filter Operator [FIL_156] (rows=500/500 width=178)
+                                                      Group By Operator [GBY_35] (rows=525/319 width=178)
+                                                        Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                                      <-Union 21 [SIMPLE_EDGE]
+                                                        <-Map 20 [CONTAINS] llap
+                                                          Reduce Output Operator [RS_34]
+                                                            PartitionCols:_col1, _col0
+                                                            Select Operator [SEL_27] (rows=25/25 width=175)
+                                                              Output:["_col0","_col1"]
+                                                              Filter Operator [FIL_148] (rows=25/25 width=175)
+                                                                predicate:value is not null
+                                                                TableScan [TS_25] (rows=25/25 width=175)
+                                                                  Output:["key","value"]
+                                                        <-Map 25 [CONTAINS] llap
+                                                          Reduce Output Operator [RS_34]
+                                                            PartitionCols:_col1, _col0
+                                                            Select Operator [SEL_30] (rows=500/500 width=178)
+                                                              Output:["_col0","_col1"]
+                                                              Filter Operator [FIL_149] (rows=500/500 width=178)
+                                                                predicate:value is not null
+                                                                TableScan [TS_28] (rows=500/500 width=178)
+                                                                  Output:["key","value"]
+                              <-Reducer 5 [CONTAINS] llap
+                                Reduce Output Operator [RS_62]
+                                  PartitionCols:_col0, _col1
+                                  Select Operator [SEL_24] (rows=67/61 width=177)
+                                    Output:["_col0","_col1"]
+                                    Merge Join Operator [MERGEJOIN_160] (rows=67/61 width=177)
+                                      Conds:RS_21._col2=RS_22._col0(Inner),Output:["_col2","_col5"]
+                                    <-Map 17 [SIMPLE_EDGE] llap
+                                      SHUFFLE [RS_22]
+                                        PartitionCols:_col0
+                                        Select Operator [SEL_17] (rows=500/500 width=178)
+                                          Output:["_col0","_col1"]
+                                          Filter Operator [FIL_147] (rows=500/500 width=178)
+                                            predicate:key is not null
+                                             Please refer to the previous TableScan [TS_15]
+                                    <-Reducer 4 [SIMPLE_EDGE] llap
+                                      SHUFFLE [RS_21]
+                                        PartitionCols:_col2
+                                        Merge Join Operator [MERGEJOIN_159] (rows=42/52 width=86)
+                                          Conds:RS_18._col1=RS_19._col1(Inner),Output:["_col2"]
+                                        <-Map 14 [SIMPLE_EDGE] llap
+                                          SHUFFLE [RS_19]
+                                            PartitionCols:_col1
+                                             Please refer to the previous Select Operator [SEL_14]
+                                        <-Reducer 3 [SIMPLE_EDGE] llap
+                                          SHUFFLE [RS_18]
+                                            PartitionCols:_col1
+                                            Select Operator [SEL_11] (rows=525/319 width=178)
+                                              Output:["_col1"]
+                                              Group By Operator [GBY_10] (rows=525/319 width=178)
+                                                Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                              <-Union 2 [SIMPLE_EDGE]
+                                                <-Map 1 [CONTAINS] llap
+                                                  Reduce Output Operator [RS_9]
+                                                    PartitionCols:_col1, _col0
+                                                    Select Operator [SEL_2] (rows=25/25 width=175)
+                                                      Output:["_col0","_col1"]
+                                                      Filter Operator [FIL_144] (rows=25/25 width=175)
                                                         predicate:value is not null
-                                                        TableScan [TS_74] (rows=500/500 width=178)
+                                                        TableScan [TS_0] (rows=25/25 width=175)
                                                           Output:["key","value"]
-                  <-Reducer 7 [CONTAINS] llap
-                    Reduce Output Operator [RS_111]
-                      PartitionCols:_col0, _col1
-                      Group By Operator [GBY_63] (rows=2749/309 width=178)
-                        Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
-                      <-Union 6 [SIMPLE_EDGE]
-                        <-Reducer 16 [CONTAINS] llap
-                          Reduce Output Operator [RS_62]
-                            PartitionCols:_col0, _col1
-                            Select Operator [SEL_58] (rows=2682/1056 width=178)
-                              Output:["_col0","_col1"]
-                              Merge Join Operator [MERGEJOIN_162] (rows=2682/1056 width=178)
-                                Conds:RS_55._col2=RS_56._col0(Inner),Output:["_col2","_col5"]
-                              <-Map 24 [SIMPLE_EDGE] llap
-                                SHUFFLE [RS_56]
-                                  PartitionCols:_col0
-                                  Select Operator [SEL_51] (rows=500/500 width=178)
-                                    Output:["_col0","_col1"]
-                                    Filter Operator [FIL_152] (rows=500/500 width=178)
-                                      predicate:key is not null
-                                      TableScan [TS_49] (rows=500/500 width=178)
-                                        default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
-                              <-Reducer 15 [SIMPLE_EDGE] llap
-                                SHUFFLE [RS_55]
-                                  PartitionCols:_col2
-                                  Merge Join Operator [MERGEJOIN_161] (rows=1658/512 width=87)
-                                    Conds:RS_52._col1=RS_53._col1(Inner),Output:["_col2"]
-                                  <-Map 14 [SIMPLE_EDGE] llap
-                                    SHUFFLE [RS_53]
-                                      PartitionCols:_col1
-                                      Select Operator [SEL_48] (rows=500/500 width=178)
-                                        Output:["_col0","_col1"]
-                                        Filter Operator [FIL_151] (rows=500/500 width=178)
-                                          predicate:(key is not null and value is not null)
-                                          TableScan [TS_15] (rows=500/500 width=178)
-                                            default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
-                                  <-Reducer 21 [SIMPLE_EDGE] llap
-                                    SHUFFLE [RS_52]
-                                      PartitionCols:_col1
-                                      Select Operator [SEL_45] (rows=1025/319 width=178)
-                                        Output:["_col1"]
-                                        Group By Operator [GBY_44] (rows=1025/319 width=178)
-                                          Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
-                                        <-Union 20 [SIMPLE_EDGE]
-                                          <-Map 23 [CONTAINS] llap
-                                            Reduce Output Operator [RS_43]
-                                              PartitionCols:_col1, _col0
-                                              Select Operator [SEL_39] (rows=500/500 width=178)
-                                                Output:["_col0","_col1"]
-                                                Filter Operator [FIL_150] (rows=500/500 width=178)
-                                                  predicate:value is not null
-                                                  TableScan [TS_37] (rows=500/500 width=178)
-                                                    Output:["key","value"]
-                                          <-Reducer 19 [CONTAINS] llap
-                                            Reduce Output Operator [RS_43]
-                                              PartitionCols:_col1, _col0
-                                              Select Operator [SEL_36] (rows=525/319 width=178)
-                                                Output:["_col0","_col1"]
-                                                Group By Operator [GBY_35] (rows=525/319 width=178)
-                                                  Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
-                                                <-Union 18 [SIMPLE_EDGE]
-                                                  <-Map 17 [CONTAINS] llap
-                                                    Reduce Output Operator [RS_34]
-                                                      PartitionCols:_col1, _col0
-                                                      Select Operator [SEL_27] (rows=25/25 width=175)
-                                                        Output:["_col0","_col1"]
-                                                        Filter Operator [FIL_148] (rows=25/25 width=175)
-                                                          predicate:value is not null
-                                                          TableScan [TS_25] (rows=25/25 width=175)
-                                                            Output:["key","value"]
-                                                  <-Map 22 [CONTAINS] llap
-                                                    Reduce Output Operator [RS_34]
-                                                      PartitionCols:_col1, _col0
-                                                      Select Operator [SEL_30] (rows=500/500 width=178)
-                                                        Output:["_col0","_col1"]
-                                                        Filter Operator [FIL_149] (rows=500/500 width=178)
-                                                          predicate:value is not null
-                                                          TableScan [TS_28] (rows=500/500 width=178)
-                                                            Output:["key","value"]
-                        <-Reducer 5 [CONTAINS] llap
-                          Reduce Output Operator [RS_62]
-                            PartitionCols:_col0, _col1
-                            Select Operator [SEL_24] (rows=67/61 width=177)
-                              Output:["_col0","_col1"]
-                              Merge Join Operator [MERGEJOIN_160] (rows=67/61 width=177)
-                                Conds:RS_21._col2=RS_22._col0(Inner),Output:["_col2","_col5"]
-                              <-Map 14 [SIMPLE_EDGE] llap
-                                SHUFFLE [RS_22]
-                                  PartitionCols:_col0
-                                  Select Operator [SEL_17] (rows=500/500 width=178)
-                                    Output:["_col0","_col1"]
-                                    Filter Operator [FIL_147] (rows=500/500 width=178)
-                                      predicate:key is not null
-                                       Please refer to the previous TableScan [TS_15]
-                              <-Reducer 4 [SIMPLE_EDGE] llap
-                                SHUFFLE [RS_21]
-                                  PartitionCols:_col2
-                                  Merge Join Operator [MERGEJOIN_159] (rows=42/52 width=86)
-                                    Conds:RS_18._col1=RS_19._col1(Inner),Output:["_col2"]
-                                  <-Map 11 [SIMPLE_EDGE] llap
-                                    SHUFFLE [RS_19]
-                                      PartitionCols:_col1
-                                       Please refer to the previous Select Operator [SEL_14]
-                                  <-Reducer 3 [SIMPLE_EDGE] llap
-                                    SHUFFLE [RS_18]
-                                      PartitionCols:_col1
-                                      Select Operator [SEL_11] (rows=525/319 width=178)
-                                        Output:["_col1"]
-                                        Group By Operator [GBY_10] (rows=525/319 width=178)
-                                          Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
-                                        <-Union 2 [SIMPLE_EDGE]
-                                          <-Map 1 [CONTAINS] llap
-                                            Reduce Output Operator [RS_9]
-                                              PartitionCols:_col1, _col0
-                                              Select Operator [SEL_2] (rows=25/25 width=175)
-                                                Output:["_col0","_col1"]
-                                                Filter Operator [FIL_144] (rows=25/25 width=175)
-                                                  predicate:value is not null
-                                                  TableScan [TS_0] (rows=25/25 width=175)
-                                                    Output:["key","value"]
-                                          <-Map 10 [CONTAINS] llap
-                                            Reduce Output Operator [RS_9]
-                                              PartitionCols:_col1, _col0
-                                              Select Operator [SEL_5] (rows=500/500 width=178)
-                                                Output:["_col0","_col1"]
-                                                Filter Operator [FIL_145] (rows=500/500 width=178)
-                                                  predicate:value is not null
-                                                  TableScan [TS_3] (rows=500/500 width=178)
-                                                    Output:["key","value"]
-              File Output Operator [FS_117]
-                table:{"name:":"default.b"}
-                 Please refer to the previous Group By Operator [GBY_112]
-              File Output Operator [FS_119]
-                table:{"name:":"default.c"}
-                 Please refer to the previous Group By Operator [GBY_112]
+                                                <-Map 13 [CONTAINS] llap
+                                                  Reduce Output Operator [RS_9]
+                                                    PartitionCols:_col1, _col0
+                                                    Select Operator [SEL_5] (rows=500/500 width=178)
+                                                      Output:["_col0","_col1"]
+                                                      Filter Operator [FIL_145] (rows=500/500 width=178)
+                                                        predicate:value is not null
+                                                        TableScan [TS_3] (rows=500/500 width=178)
+                                                          Output:["key","value"]
+              Reducer 11 llap
+              File Output Operator [FS_5]
+                Group By Operator [GBY_3] (rows=1/1 width=880)
+                  Output:["_col0","_col1"],aggregations:["compute_stats(VALUE._col0, 'hll')","compute_stats(VALUE._col2, 'hll')"]
+                <-Reducer 9 [CUSTOM_SIMPLE_EDGE] llap
+                  PARTITION_ONLY_SHUFFLE [RS_2]
+                    Select Operator [SEL_1] (rows=2941/319 width=178)
+                      Output:["key","value"]
+                       Please refer to the previous Group By Operator [GBY_112]
+              Reducer 12 llap
+              File Output Operator [FS_5]
+                Group By Operator [GBY_3] (rows=1/1 width=880)
+                  Output:["_col0","_col1"],aggregations:["compute_stats(VALUE._col0, 'hll')","compute_stats(VALUE._col2, 'hll')"]
+                <-Reducer 9 [CUSTOM_SIMPLE_EDGE] llap
+                  PARTITION_ONLY_SHUFFLE [RS_2]
+                    Select Operator [SEL_1] (rows=2941/319 width=178)
+                      Output:["key","value"]
+                       Please refer to the previous Group By Operator [GBY_112]
 Stage-6
   Stats Work{}
     Stage-1
@@ -1738,10 +1805,12 @@ POSTHOOK: type: QUERY
 Plan optimized by CBO.
 
 Vertex dependency in root stage
-Map 6 <- Union 3 (CONTAINS)
+Map 8 <- Union 3 (CONTAINS)
 Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE), Union 3 (CONTAINS)
 Reducer 4 <- Union 3 (SIMPLE_EDGE)
 Reducer 5 <- Reducer 4 (SIMPLE_EDGE)
+Reducer 6 <- Reducer 5 (CUSTOM_SIMPLE_EDGE)
+Reducer 7 <- Reducer 4 (CUSTOM_SIMPLE_EDGE)
 
 Stage-4
   Stats Work{}
@@ -1751,40 +1820,54 @@ Stage-4
         Stage-3
           Dependency Collection{}
             Stage-2
-              Reducer 5 llap
-              File Output Operator [FS_18]
-                table:{"name:":"default.dest1"}
-                Select Operator [SEL_16] (rows=309/310 width=272)
-                  Output:["_col0","_col1"]
-                  Group By Operator [GBY_15] (rows=309/310 width=96)
-                    Output:["_col0","_col1"],aggregations:["count(DISTINCT KEY._col1:0._col0)"],keys:KEY._col0
-                  <-Reducer 4 [SIMPLE_EDGE] llap
-                    SHUFFLE [RS_14]
-                      PartitionCols:_col0
-                      Group By Operator [GBY_11] (rows=501/310 width=272)
-                        Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
-                      <-Union 3 [SIMPLE_EDGE]
-                        <-Map 6 [CONTAINS] llap
-                          Reduce Output Operator [RS_10]
-                            PartitionCols:_col0, _col1
-                            Select Operator [SEL_6] (rows=500/500 width=178)
-                              Output:["_col0","_col1"]
-                              TableScan [TS_5] (rows=500/500 width=178)
-                                Output:["key","value"]
-                        <-Reducer 2 [CONTAINS] llap
-                          Reduce Output Operator [RS_10]
-                            PartitionCols:_col0, _col1
-                            Select Operator [SEL_4] (rows=1/1 width=272)
-                              Output:["_col0","_col1"]
-                              Group By Operator [GBY_3] (rows=1/1 width=8)
-                                Output:["_col0"],aggregations:["count()"]
-                              <-Map 1 [CUSTOM_SIMPLE_EDGE] llap
-                                PARTITION_ONLY_SHUFFLE [RS_2]
-                                  Select Operator [SEL_1] (rows=500/500 width=10)
-                                    TableScan [TS_0] (rows=500/500 width=10)
-                                      default@src,s1,Tbl:COMPLETE,Col:COMPLETE
-                    File Output Operator [FS_24]
-                      table:{"name:":"default.dest2"}
+              Reducer 6 llap
+              File Output Operator [FS_5]
+                Group By Operator [GBY_3] (rows=1/2 width=880)
+                  Output:["_col0","_col1"],aggregations:["compute_stats(VALUE._col0, 'hll')","compute_stats(VALUE._col2, 'hll')"]
+                <-Reducer 5 [CUSTOM_SIMPLE_EDGE] llap
+                  File Output Operator [FS_18]
+                    table:{"name:":"default.dest1"}
+                    Select Operator [SEL_16] (rows=309/310 width=272)
+                      Output:["_col0","_col1"]
+                      Group By Operator [GBY_15] (rows=309/310 width=96)
+                        Output:["_col0","_col1"],aggregations:["count(DISTINCT KEY._col1:0._col0)"],keys:KEY._col0
+                      <-Reducer 4 [SIMPLE_EDGE] llap
+                        PARTITION_ONLY_SHUFFLE [RS_14]
+                          PartitionCols:_col0
+                          Group By Operator [GBY

<TRUNCATED>