Johannes Mayer created HIVE-17499:
-------------------------------------

             Summary: Hive Cube Operator returns duplicate rows
                 Key: HIVE-17499
                 URL: https://issues.apache.org/jira/browse/HIVE-17499
             Project: Hive
          Issue Type: Bug
    Affects Versions: 2.1.0
         Environment: Hortonworks HDP 2.6.0.1


            Reporter: Johannes Mayer
            Priority: Critical


The cube Operator returns duplicate rows, when it shouldnt. I ran the same 
query in Pig and got the correct result. (see the example below)


{code:sql}
insert overwrite table thesis.clickstream_export PARTITION (ds_year = '2016' , 
ds_month = '04' , ds_day = '01')
select year(ds), month(ds), day(ds), c8, c11, count(*)
from thesis.clickstream_landing
where ds = '2016-04-01'
group by year(ds), month(ds), day(ds), c8, c11
With Cube;
{code}

Then I check for duplicates:

{code:sql}
select year, month, day, country, city, count (*) from thesis.clickstream_export
where ds_year = '2016' and ds_month = '04' and ds_day = '01'
group by year, month, day, country, city
having count(*) > 1;
{code}

The result is:
year    month   day     country         city    _c5
null    null    null    null    null    4
null    null    1       null    null    4
null    4       null    null    null    4
null    4       1       null    null    4
2016    null    null    null    null    4
2016    null    1       null    null    4
2016    4       null    null    null    4
2016    4       1       null    null    4


When i do the same thing in Pig, everything is fine:
{code:pig}
DATA = LOAD 'thesis.clickstream_landing' USING 
org.apache.hive.hcatalog.pig.HCatLoader();

FILTERED = FOREACH DATA GENERATE GetYear(ToDate(ds, 'yyyy-MM-dd')) AS year, 
GetMonth(ToDate(ds, 'yyyy-MM-dd')) AS month, GetDay(ToDate(ds, 'yyyy-MM-dd')) 
AS day, c8 AS country, c11 AS city;

CUBED = CUBE FILTERED BY CUBE(year, month, day, country, city);

D = FOREACH CUBED GENERATE FLATTEN(group) AS (year, month, day, country, city), 
COUNT_STAR(cube) As click_count;

STORE D INTO 'thesis.clickstream_export' USING 
org.apache.hive.hcatalog.pig.HCatStorer('ds_year=2016, ds_month=04, ds_day=02');
{code}

Then again I check for duplicates:
{code:sql}
select year, month, day, country, city, count (*) from thesis.clickstream_export
where ds_year = '2016' and ds_month = '04' and ds_day = '02'
group by year, month, day, country, city
having count(*) > 1;
{code}

And the result is empty as it should be.




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to