hive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Szehon Ho (JIRA)" <>
Subject [jira] [Updated] (HIVE-7669) parallel order by clause on a string column fails with IOException: Split points are out of order
Date Thu, 28 Aug 2014 19:45:09 GMT


Szehon Ho updated HIVE-7669:

    Release Note: 
Background: HIVE-1402 added parallelism (multiple reducers) to an order-by query, enabled
by "hive.optimize.sampling.orderby".  As order-by requires total order, partitioning data
among reducers uses a range-partition, and thus sampling is needed to give us the values for
the ranges of each reducer (eg, 1-100, 100-200, etc). 

HIVE-7669 fixes the algorithm to generate a better range-partition split when the sample data
lacks enough unique values, and throws exception if the calculated number of reducers falls
below a certain threshold.

Yea, I agree it needs explanation.  

I gave a shot at release note just to give my understanding, though I dont know too much and
Navis is the expert.  Feel free to take a look and correct as necessary.

> parallel order by clause on a string column fails with IOException: Split points are
out of order
> -------------------------------------------------------------------------------------------------
>                 Key: HIVE-7669
>                 URL:
>             Project: Hive
>          Issue Type: Bug
>          Components: HiveServer2, Query Processor, SQL
>    Affects Versions: 0.12.0
>         Environment: Hive 0.12.0-cdh5.0.0
> OS: Redhat linux
>            Reporter: Vishal Kamath
>            Assignee: Navis
>              Labels: orderby
>         Attachments: HIVE-7669.1.patch.txt, HIVE-7669.2.patch.txt, HIVE-7669.3.patch.txt
> The source table has 600 Million rows and it has a String column "l_shipinstruct" which
has 4 unique values. (Ie. these 4 values are repeated across the 600 million rows)
> We are sorting it based on this string column "l_shipinstruct" as shown in the below
HiveQL with the following parameters. 
> {code:sql}
> set hive.optimize.sampling.orderby=true;
> set hive.optimize.sampling.orderby.number=10000000;
> set hive.optimize.sampling.orderby.percent=0.1f;
> insert overwrite table lineitem_temp_report 
> select 
>   l_orderkey, l_partkey, l_suppkey, l_linenumber, l_quantity, l_extendedprice, l_discount,
l_tax, l_returnflag, l_linestatus, l_shipdate, l_commitdate, l_receiptdate, l_shipinstruct,
l_shipmode, l_comment
> from 
>   lineitem
> order by l_shipinstruct;
> {code}
> Stack Trace
> Diagnostic Messages for this Task:
> {noformat}
> Error: java.lang.RuntimeException: Error in configuring object
>         at org.apache.hadoop.util.ReflectionUtils.setJobConf(
>         at org.apache.hadoop.util.ReflectionUtils.setConf(
>         at org.apache.hadoop.util.ReflectionUtils.newInstance(
>         at org.apache.hadoop.mapred.MapTask$OldOutputCollector.<init>(
>         at org.apache.hadoop.mapred.MapTask.runOldMapper(
>         at
>         at org.apache.hadoop.mapred.YarnChild$
>         at Method)
>         at
>         at
>         at org.apache.hadoop.mapred.YarnChild.main(
> Caused by: java.lang.reflect.InvocationTargetException
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>         at java.lang.reflect.Method.invoke(
>         at org.apache.hadoop.util.ReflectionUtils.setJobConf(
>         ... 10 more
> Caused by: java.lang.IllegalArgumentException: Can't read partitions file
>         at org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner.setConf(
>         at org.apache.hadoop.mapred.lib.TotalOrderPartitioner.configure(
>         at org.apache.hadoop.hive.ql.exec.HiveTotalOrderPartitioner.configure(
>         ... 15 more
> Caused by: Split points are out of order
>         at org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner.setConf(
>         ... 17 more
> {noformat}

This message was sent by Atlassian JIRA

View raw message