Return-Path: X-Original-To: apmail-hive-user-archive@www.apache.org Delivered-To: apmail-hive-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9C6E6106E1 for ; Fri, 28 Aug 2015 05:03:49 +0000 (UTC) Received: (qmail 86689 invoked by uid 500); 28 Aug 2015 05:03:47 -0000 Delivered-To: apmail-hive-user-archive@hive.apache.org Received: (qmail 86621 invoked by uid 500); 28 Aug 2015 05:03:47 -0000 Mailing-List: contact user-help@hive.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hive.apache.org Delivered-To: mailing list user@hive.apache.org Received: (qmail 86611 invoked by uid 99); 28 Aug 2015 05:03:47 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Aug 2015 05:03:47 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 21362181939 for ; Fri, 28 Aug 2015 05:03:47 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 3.124 X-Spam-Level: *** X-Spam-Status: No, score=3.124 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, HTML_FONT_LOW_CONTRAST=0.001, HTML_MESSAGE=3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.006, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=163.com Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id hiWXEr8H2oD2 for ; Fri, 28 Aug 2015 05:03:42 +0000 (UTC) Received: from m12-18.163.com (m12-18.163.com [220.181.12.18]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with ESMTP id 7473724B15 for ; Fri, 28 Aug 2015 05:03:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:Mime-Version:Message-ID; bh=krKTY FHMxHlVGhlrxU+tWAK0EW73mkrN9sbICahLsC8=; b=hKe6OIiMTCyryCagCRki/ uhpwwewV95bxyFB0f/hbeVK8DUPWE6Vn1uq7mer5MG4/aUV8DPiCJUy7r/iuYH5q 048M64CMdbrVtFp40tAKIO9ikDm5i6EreAKfxfde7aUo26d16z5hGybfVLGQ9Xqh AHvptf7H34StROhviaxeho= Received: from NHSH1MNB72514 (unknown [211.160.168.66]) by smtp14 (Coremail) with SMTP id EsCowEA5u0Og699VdKQiAw--.27629S2; Fri, 28 Aug 2015 13:03:30 +0800 (CST) Date: Fri, 28 Aug 2015 13:03:30 +0800 From: "r7raul1984@163.com" To: user Subject: Re: Re: sql mapjoin very slow References: X-Priority: 3 X-Has-Attach: no X-Mailer: Foxmail 7, 2, 5, 136[cn] Mime-Version: 1.0 Message-ID: <2015082813032067249616@163.com> Content-Type: multipart/related; boundary="----=_001_NextPart865581243358_=----" X-CM-TRANSID: EsCowEA5u0Og699VdKQiAw--.27629S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxJryrCF4DCw1DZw4rWr4fGrg_yoW8WrWUpF W3tr9xJF95X34xGw4kt3Z7WrW0grWxJFy2vwsxGw4xtas5CF15Za4Dta1F9Fy2qFyDtw43 trs0qF9Fva4ruaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jl-eOUUUUU= X-Originating-IP: [211.160.168.66] X-CM-SenderInfo: 3uxut3borzmki6rwjhhfrp/1tbiVANkzlUL4hGI1wAAsP This is a multi-part message in MIME format. ------=_001_NextPart865581243358_=---- Content-Type: multipart/alternative; boundary="----=_002_NextPart317271062388_=----" ------=_002_NextPart317271062388_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SSBpbmNyZWFzZSBoaXZlLmhhc2h0YWJsZS5pbml0aWFsQ2FwYWNpdHkgdG8gMTAwMDAwMCBhbmQg ZGVjcmVhc2UgaGl2ZS5oYXNodGFibGUubG9hZGZhY3RvciB0byAwLjUgIC4gIFRoZSBxdWVyeSBy dW4gZmFzdGVyLg0KDQoNCg0KcjdyYXVsMTk4NEAxNjMuY29tDQogDQpGcm9tOiBTZXJnZXkgU2hl bHVraGluDQpEYXRlOiAyMDE1LTA4LTI4IDA5OjU2DQpUbzogdXNlcg0KU3ViamVjdDogUmU6IHNx bCBtYXBqb2luIHZlcnkgc2xvdw0KSXMgdGhlIHNtYWxsLXNpZGUgdGFibGUgbGFyZ2UsIGRvZXMg aXQgaGF2ZSBhIGxvdCBvZiByb3dzIGZvciB0aGUgc2FtZSBrZXlzLCBvciBkb2VzIGl0IGhhdmUg YSBsb3Qgb2Ygc2tldz8NCkFyZSB0aGVyZSBsb3RzIG9mIG1pc3NlcyAod2hlcmUgdGhlcmXigJlk IGJlIG5vIHZhbHVlIGluIHRoZSBzbWFsbCB0YWJsZSBmb3IgdGhlIGxhcmdlIHRhYmxlIHZhbHVl KT8NCg0KSWYgeW91IGhhdmUgZW5vdWdoIG1lbW9yeSB5b3UgY2FuIHRyeSBpbmNyZWFzaW5nIGlu aXRpYWwgc2l6ZSBhbmQgZGVjcmVhc2luZyBsb2FkIGZhY3Rvci4gQWx0aG91Z2ggd2l0aG91dCBs b3ctbGV2ZWwgZGVidWdnaW5nIGl04oCZcyBoYXJkIHRvIHRlbGwgaWYgdGhlIGlzc3VlIGlzIG5v dCBvYnZpb3VzIChJLmUgdGhlIGFib3ZlKS4NCklmIHRoZXJl4oCZcyBubyBvYnZpb3VzIHByb2Js ZW0geW91IG1pZ2h0IGNvbnNpZGVyIG5vdCB1c2luZyBtYXAgam9pbi4NCg0KDQpGcm9tOiAicjdy YXVsMTk4NEAxNjMuY29tIiA8cjdyYXVsMTk4NEAxNjMuY29tPg0KUmVwbHktVG86IHVzZXIgPHVz ZXJAaGl2ZS5hcGFjaGUub3JnPg0KRGF0ZTogVGh1cnNkYXksIEF1Z3VzdCAyNywgMjAxNSBhdCAx ODo1MQ0KVG86IHVzZXIgPHVzZXJAaGl2ZS5hcGFjaGUub3JnPg0KU3ViamVjdDogUmU6IFJlOiBz cWwgbWFwam9pbiB2ZXJ5IHNsb3cNCg0KSSB1c2UgTVIuIA0KTXkgbWFwam9pbiBjb25maWcgYXMg c2hvd2VkIGluIGZvbGxvdyBwaWN0dXJlOg0KDQoNCg0KcjdyYXVsMTk4NEAxNjMuY29tDQogDQpG cm9tOiBTZXJnZXkgU2hlbHVraGluDQpEYXRlOiAyMDE1LTA4LTI4IDA5OjIxDQpUbzogdXNlcg0K U3ViamVjdDogUmU6IHNxbCBtYXBqb2luIHZlcnkgc2xvdw0KQXJlIHlvdSB1c2luZyBNUiBhbmQg VGV6PyBZb3UgY291bGQgdHJ5IG9wdGltaXplZCBoYXNoIHRhYmxlIGluIGNhc2Ugb2YgVGV6LCBh bHRob3VnaCBpdOKAmXMgc3VwcG9zZWQgdG8gaW1wcm92ZSBtZW1vcnksIG5vdCBuZWNlc3Nhcmls eSBwZXJmLg0KDQpDYW4geW91IGFsc28gc2hhcmUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBxdWVy eSBhbmQgZGF0YT8gSXQgaXMgc3VycHJpc2luZyB0byBzZWUgc28gbXVjaCB0aW1lIGZvciBIYXNo TWFwLmdldC4NCg0KRnJvbTogInI3cmF1bDE5ODRAMTYzLmNvbSIgPHI3cmF1bDE5ODRAMTYzLmNv bT4NClJlcGx5LVRvOiB1c2VyIDx1c2VyQGhpdmUuYXBhY2hlLm9yZz4NCkRhdGU6IFRodXJzZGF5 LCBBdWd1c3QgMjcsIDIwMTUgYXQgMTg6MDMNClRvOiB1c2VyIDx1c2VyQGhpdmUuYXBhY2hlLm9y Zz4NClN1YmplY3Q6IHNxbCBtYXBqb2luIHZlcnkgc2xvdw0KDQoNCldoZW4gSSBlbmFibGUgbWFw am9pbiAsSSBzZWUgTWFwam9pbiB0YXNrIHJ1biB2ZXJ5IHNsb3cuIE15IGVudnJpb21lbnQgaXMg aGFkb29wIDIuMy4wIGhpdmUgMS4xLjAuDQoNCk15IGF0dGFjaCBpcyAgb25lIG1hcCBoaXZlIGxv ZyBhbmQgdGhpcyBtYXAncyB4cHJvZiBsb2cuDQoNCkluIG1hcCB4cHJvZiBsb2cgLEkgc2VlIA0K Q29tcGlsZWQgKyBuYXRpdmUgTWV0aG9kIA0KOTIuMyUgNjQzNTI3ICsgMCBqYXZhLnV0aWwuSGFz aE1hcC5nZXQgDQoyLjglIDE5ODU2ICsgMCBqYXZhLnV0aWwuSGFzaE1hcC5wdXQgDQoxLjIlIDg2 MjMgKyAwIG9yZy5hcGFjaGUuaGFkb29wLmhpdmUucWwuZXhlYy5wZXJzaXN0ZW5jZS5IYXNoTWFw V3JhcHBlciRHZXRBZGFwdG9yLnNldEZyb21Sb3cgDQowLjElIDk1MyArIDAgb3JnLmFwYWNoZS5o YWRvb3AuaGl2ZS5xbC5leGVjLkV4cHJOb2RlQ29sdW1uRXZhbHVhdG9yLl9ldmFsdWF0ZSANCjAu MSUgNTc2ICsgMCBvcmcuYXBhY2hlLmhhZG9vcC5oaXZlLnNlcmRlMi5vYmplY3RpbnNwZWN0b3Iu T2JqZWN0SW5zcGVjdG9yVXRpbHMuY29weVRvU3RhbmRhcmRPYmplY3QNCg0KDQoNCnI3cmF1bDE5 ODRAMTYzLmNvbQ0K ------=_002_NextPart317271062388_=---- Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =0A
I increase hive.hashtable.initialCapacity= to 1000000 and decrease hive.hashtable.loadfactor to 0.5  .  = The query run faster.
=0A


=0A
r7raul1984@163.com
=0A
 
Date: 2015-08-28&nbs= p;09:56
To: = user
Subject: Re: sql mapjoin very slow
=0A
Is the small-side table large, does it have a lot of row= s for the same keys, or does it have a lot of skew?
=0A=
Are there lots of misses (where there=E2=80=99d be n= o value in the small table for the large table value)?
=0A
=0A
=0A
If you have= enough memory you can try increasing initial size and decreasing load fac= tor. Although without low-level debugging it=E2=80=99s hard to tell if the= issue is not obvious (I.e the above).
=0A
If there=E2=80=99s no obvious problem you might consider not using map j= oin.
=0A

=0A
=0A

=0A
=0A=0A
=0AFrom: "r7raul1984@163.com" <r7raul1984@163.com>
=0AReply-To: user <use= r@hive.apache.org>
=0ADate: Thursday, August 27, 2015 at 18:51
=0ATo: user <user@hive.= apache.org>
=0ASubject: = Re: Re: sql mapjoin very slow
=0A
=0A

=0A
=0A
=0A=
=0A
I use MR. 
=0A
My mapjoin config a= s showed in follow picture:
=0A
=0A
=
=0A

=0A
=0A
=0A
=0A<= div style=3D"MARGIN: 10px; FONT-FAMILY: verdana; FONT-SIZE: 10pt">=0A=0A=0A
=0A
=0A
 
=0A
=0A
Serg= ey Shelukhin
=0A
Date: 2015-08-28 09:21=0A
To: user<= /div>=0A
Subject: Re: sql mapjoin very slow
=0A
= =0A
=0A
=0A
=0A
Are you = using MR and Tez? You could try optimized hash table in case of Tez, altho= ugh it=E2=80=99s supposed to improve memory, not necessarily perf.
= =0A

=0A
=0A
Can you also share characteristics of the que= ry and data? It is surprising to see so much time for HashMap.get.
= =0A

=0A
=0A=0A
=0AFr= om: "r7raul1984@163.com" = <r7raul1984@163.com>
= =0AReply-To: user <user@hive.apache.org>
=0ADate: Thursday, August 27, 2015 at 18:03
= =0ATo: user <user@hive.apache.org>
=0ASubject: sql mapjoin very slow
=0A
=0A
=
=0A
=0A
=0A
=0A

=0A
=0A
Whe= n I enable mapjoin ,I see Mapjoin task run very slow. My envrioment is had= oop 2.3.0 hive 1.1.0.
=0A

=0A
=0A
My attach is  = ;one map hive log and this map's xprof log.
=0A

=0A
=0A<= div>In map xprof log ,I see 
=0A
Compiled + native Method
=0A92.3% 643527 + 0 = java.util.HashMap.get
=0A2.8% 19856 + 0 java.util.HashMap.put
=0A1= .2% 8623 + 0 org.apache.hadoop.hive.ql.exec.persistence.HashMapWrapper$Get= Adaptor.setFromRow=0A
=0A0.1% 953 + 0 org.apache.hadoop.hive.ql.exec.Ex= prNodeColumnEvaluator._evaluate
=0A0.1% 576 + 0 org.apache.hadoop.hive= .serde2.objectinspector.ObjectInspectorUtils.copyToStandardObject
=0A

=0A
=0A
=0A
=0A=0A
=0A
=0A=0A
=0A
=0A
=0A
=0A
=0A
= =0A
=0A ------=_002_NextPart317271062388_=------ ------=_001_NextPart865581243358_=---- Content-Type: image/png; name="m`{u~q}_fv9m(08-28-13-01-19).png" Content-Transfer-Encoding: base64 Content-ID: <_Foxmail.1@3aa29042-8573-a25d-dbbe-e64d646f47c1> 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 rkJggg== ------=_001_NextPart865581243358_=---- Content-Type: image/png; name="2gxee{aun}hj(08-28-13-01-19).png" Content-Transfer-Encoding: base64 Content-ID: <_Foxmail.1@d77bb3e3-1176-6b7e-ba0f-e34b8e87e74b> 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 szrJXgSAVSq7Fx5C+MP77z28/MTh7XvhwlYIf3oYwm9//sYbP//86SefuB/C2SuXz//q1mF47PZH 4cI3JTisWOm98LOXLz1989ZvwsXPbt995upLIYQQ7h/u/Xrv8JP7dz/+p8/Ck7O/fXsuAscpH5hP cYQ/fvWFF54//e6bb//yk7/++vkzp8Njl7/98gsXolZXrj69d/vg8cPw7F9uLaNcYEDxx9maDH/v 1sPPE/zDn/3fd/5wcffq7jPPP/3xO/97L9njYXjYfPHZw8/C6RBC30UAWJnMQvoXEiGEcDqcDmHr +W+cv/Xubz4N5y9ffOzWO+8efhpCuP/h22/+7c8+bHbevnT+o5u3Hj57VYLDymW/ebMbz16+9PTH v/51s4oewieHHz/886tf2/2Li098/Ku93/5bYDfOPnb6wUfvH/4p/On+P/76w+bTMb0XAWBVimfh /+ri87t7/+edD6986xsv/qcHP/np/3zjYQiPP/3Vb3774r822H72qX/4+LwEhwnM8UtlZy9fOn/z 5ukmwcP53f9w8a2f//iNX4THn776tat/9otPPg7hy23jp77+wlf//0//7n+8EZ689NVnn7wfQghh q+8iAKzIvwBJRorcN5v2JQAAAABJRU5ErkJggg== ------=_001_NextPart865581243358_=------