ErwanMAS created HIVE-12165:
-------------------------------

             Summary: wrong result when hive.optimize.sampling.orderby=true 
with some aggregate functions
                 Key: HIVE-12165
                 URL: https://issues.apache.org/jira/browse/HIVE-12165
             Project: Hive
          Issue Type: Bug
         Environment: hortonworks  2.3

            Reporter: ErwanMAS
            Priority: Critical


This simple query give wrong result , when , i use the parallel order .

{noformat}
select count(*) , count(distinct dummyint ) , min(dummyint),max(dummyint) from 
foobar_1M ;
{noformat}

Current wrong result :

{noformat}
c0      c1      c2      c3
32740   32740   0       163695
113172  113172  163700  729555
54088   54088   729560  999995
{noformat}

Right result :
{noformat}
c0      c1      c2      c3
1000000 1000000 0       999999
{noformat}

The sql script for my test 
{noformat}
drop table foobar_1M ;
create table foobar_1M ( dummyint bigint  , dummystr string ) ;

insert overwrite table foobar_1M
       select val_int  , concat('dummy ',val_int) from
             ( select ((((((d_1*10)+d_2)*10+d_3)*10+d_4)*10+d_5)*10+d_6) as 
val_int from foobar_1
                 lateral view outer explode(split("0,1,2,3,4,5,6,7,8,9",",")) 
tbl_1 as d_1
                 lateral view outer explode(split("0,1,2,3,4,5,6,7,8,9",",")) 
tbl_2 as d_2
                 lateral view outer explode(split("0,1,2,3,4,5,6,7,8,9",",")) 
tbl_3 as d_3
                 lateral view outer explode(split("0,1,2,3,4,5,6,7,8,9",",")) 
tbl_4 as d_4
                 lateral view outer explode(split("0,1,2,3,4,5,6,7,8,9",",")) 
tbl_5 as d_5
                 lateral view outer explode(split("0,1,2,3,4,5,6,7,8,9",",")) 
tbl_6 as d_6  ) as f                 ;


set hive.optimize.sampling.orderby.number=10000;
set hive.optimize.sampling.orderby.percent=0.1f;
set mapreduce.job.reduces=3 ;

set hive.optimize.sampling.orderby=false;

select count(*) , count(distinct dummyint ) , min(dummyint),max(dummyint) from 
foobar_1M ;

set hive.optimize.sampling.orderby=true;

select count(*) , count(distinct dummyint ) , min(dummyint),max(dummyint) from 
foobar_1M ;
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to