[ 
https://issues.apache.org/jira/browse/HIVE-10163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14393111#comment-14393111
 ] 

Gunther Hagleitner commented on HIVE-10163:
-------------------------------------------

[~gopalv] your patch doesn't work. You're assuming that the first key you see 
has no "nulls". Which isn't always the case. Also, I think you wrote this:

{noformat}
for (int i = 0; i < key.size(); i++) {
        WritableComparable k = (WritableComparable) key.get(i);
}
{noformat}

where key is a list...

I'll see if I can fix this, otherwise I'll go back to my patch and remove the 
hash map.

> 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
>            Assignee: Gunther Hagleitner
>              Labels: JOIN, Performance
>         Attachments: HIVE-10163.1.patch, HIVE-10163.2.patch, 
> mergejoin-comparekeys.png, mergejoin-parallel-bt.png, 
> mergejoin-parallel-lock.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-parallel-lock.png!
> !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.
> !mergejoin-parallel-bt.png!



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

Reply via email to