【发布时间】:2017-05-18 05:43:26
【问题描述】:
我想从另一个配置单元表中插入一个分区配置单元表。数据在目标表的单个分区中。问题是所有减速器完成得非常快,但其中一个减速器需要很长时间,因为所有工作都在单个减速器上完成。
我想找到一种方法来将工作平均分配给所有减速器。有什么办法吗?如何提高插入覆盖的性能?
源表 DDL:
CREATE EXTERNAL TABLE employee ( id INT,first_name String,latst_name String,email String,gender String) STORED AS TEXTFILE '/emp/data'
目标表 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) 请将附加信息添加到您的原始帖子并删除 cmets (2) 请为两个表和您用于填充目标表的代码
-
@DuduMarkovitz 我已经添加了 DDL 和 hql。请找到。
-
此操作中没有reducer...
-
@DuduMarkovitz 虽然插入覆盖将运行,但它将运行减速器
标签: performance hive hiveql