我正在使用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个阶段 - 发生了什么?
有什么想法吗?
答案 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;