如何强制配置单元在insert中将行覆盖均匀地覆盖到reducers中另一个表的分区表中以提高性能

时间:2017-05-18 05:43:26

标签: performance hive

我想从另一个hive表插入一个分区的hive表。数据将在目标表中的单个分区中进行。问题是所有减速器都完成得非常快,但其中一个减速器需要很长时间,因为所有的工作都是针对单个减速器。

我想找到一种方法来将作品平均分配给所有减速器。有没有办法这样做?如何提高插入覆盖的性能?

来源表DDL:

 CREATE EXTERNAL TABLE employee ( id INT,first_name String,latst_name String,email String,gender String) STORED AS TEXTFILE '/emp/data'

TARGET TABLE DDL:

 CREATE EXTERNAL TABLE employee_stage ( id INT,first_name String,latst_name String,email String,gender String) PARTITIONED BY (batch_id bigint) STORED AS ORC LOCATION '/stage/emp/data'

这是数据快照

1   Helen   Perrie  hperrie0@lulu.com   Female
2   Rafaelita   Jancso  rjancso1@cdbaby.com Female
3   Letti   Kelley  lkelley2@slideshare.net Female
4   Adela   Dmisek  admisek3@state.gov  Female
5   Lay Reyner  lreyner4@wired.com  Male
6   Robby   Felder  rfelder5@microsoft.com  Male
7   Thayne  Brunton tbrunton6@sun.com   Male
8   Lorrie  Roony   lroony7@oracle.com  Male
9   Hodge   Straun  hstraun8@w3.org Male
10  Gawain  Tomblett    gtomblett9@toplist.cz   Male
11  Carey   Facher  cfachera@ca.gov Male
12  Pamelina    Elijahu pelijahub@goo.ne.jp Female
13  Carmelle    Dabs    cdabsc@bizjournals.com  Female
14  Moore   Baldrick    mbaldrickd@yandex.ru    Male
15  Sheff   Morin   smorine@purevolume.com  Male
16  Zed Eary    zearyf@livejournal.com  Male
17  Angus   Pollastrone apollastroneg@wikispaces.com    Male
18  Moises  Hubach  mhubachh@usnews.com Male
19  Lilllie Beetham lbeethami@diigo.com Female
20  Mortimer    De Hooge    mdehoogej@ucoz.com  Male

源表包含超过100M的记录。

这是我正在使用的hql。

insert overwrite table employee_stage
PARTITION (batch_id)
SELECT
  id,
  first_name,
  latst_name,
  email,
  gender,
  123456789 as batch_id
FROM employee;

数据将在一个分区中进行。

请在这种情况下让我知道如何改善表现? 有没有办法在所有Reducer之间平均分配行?

1 个答案:

答案 0 :(得分:2)

我认为你在insert overwrite查询中没有进行JOINS或其他重大转换,并且在插入过程中确实发生了偏斜。因为如果你那么问题应该不是关于插入。

尝试将distribute by batch_id添加到您的插入查询并重新运行。如果仍然倾斜运行,请检查您的数据。某些特定batch_id的数据太多,或者您可能有很多空值。如何处理偏斜数据有不同的方法。其中之一是过滤掉倾斜的键并单独加载它们。检查作业跟踪器上长时间运行的reducer日志,它将为您提供有关问题所在位置的更多信息。