Hive"插入... select ... limit"非常慢

时间:2016-09-13 16:54:39

标签: performance insert hive apache-spark-sql

我正在使用Spark作为执行引擎处理Hive。桌子是未压缩的实木复合地板。

此语句在几秒钟内返回数据:

select * from mydb.src_table 
limit 100;

但是当我执行以下操作时,insert语句非常慢:

create table mydb.dest_table
    like mydb.src_table
;

insert into mydb.dest_table
    select * from mydb.src_table 
    limit 100
;

我在10分钟后终止了insert查询。 src_table非常大(20多亿行,包含大量文本的几列),但我只获得了100行。我只是不明白select ... limit是如此之快,但insert ... select ... limit是如此之慢。

EXPLAIN的{​​{1}}显示1个阶段。但对于select,它显示了不少于8个阶段 - 发生了什么?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

无需创建表格然后插入记录,请尝试 CTAS
试试这个,

CREATE TABLE IF NOT EXISTS mydb.dest_table 
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '28'
STORED AS TEXTFILE AS
 SELECT * FROM mydb.src_table;