hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gopal V (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HIVE-10163) CommonMergeJoinOperator calls WritableComparator.get() in the inner loop
Date Tue, 31 Mar 2015 07:46:53 GMT

     [ https://issues.apache.org/jira/browse/HIVE-10163?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Gopal V updated HIVE-10163:
---------------------------
    Description: 
The CommonMergeJoinOperator wastes CPU looking up the correct comparator for each WritableComparable
in each row.

{code}
@SuppressWarnings("rawtypes")
  private int compareKeys(List<Object> k1, List<Object> k2) {
    int ret = 0;
....   
      ret = WritableComparator.get(key_1.getClass()).compare(key_1, key_2);
      if (ret != 0) {
        return ret;
      }
    }
{code}

!mergejoin-comparekeys.png!

The slow part of that get() is deep within {{ReflectionUtils.setConf}}, where it tries to
use reflection to set the Comparator config for each row being compared.

  was:
The CommonMergeJoinOperator wastes CPU looking up the correct comparator for each WritableComparable
in each row.

{code}
@SuppressWarnings("rawtypes")
  private int compareKeys(List<Object> k1, List<Object> k2) {
    int ret = 0;
....   
      ret = WritableComparator.get(key_1.getClass()).compare(key_1, key_2);
      if (ret != 0) {
        return ret;
      }
    }
{code}

The slow part of that get() is deep within {{ReflectionUtils.setConf}}, where it tries to
use reflection to set the Comparator config for each row being compared.


> CommonMergeJoinOperator calls WritableComparator.get() in the inner loop
> ------------------------------------------------------------------------
>
>                 Key: HIVE-10163
>                 URL: https://issues.apache.org/jira/browse/HIVE-10163
>             Project: Hive
>          Issue Type: Bug
>          Components: Query Processor
>    Affects Versions: 1.2.0
>            Reporter: Gopal V
>              Labels: JOIN, Performance
>         Attachments: mergejoin-comparekeys.png
>
>
> The CommonMergeJoinOperator wastes CPU looking up the correct comparator for each WritableComparable
in each row.
> {code}
> @SuppressWarnings("rawtypes")
>   private int compareKeys(List<Object> k1, List<Object> k2) {
>     int ret = 0;
> ....   
>       ret = WritableComparator.get(key_1.getClass()).compare(key_1, key_2);
>       if (ret != 0) {
>         return ret;
>       }
>     }
> {code}
> !mergejoin-comparekeys.png!
> The slow part of that get() is deep within {{ReflectionUtils.setConf}}, where it tries
to use reflection to set the Comparator config for each row being compared.



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

Mime
View raw message