【发布时间】:2017-01-29 19:49:50
【问题描述】:
我在 hive 中执行一些自动查询的脚本,我们发现我们需要不时地从表中清除数据并插入新的数据。我们正在思考什么可以更快?
INSERT OVERWRITE TABLE SOME_TABLE
SELECT * FROM OTHER_TABLE;
或者这样做更快:
DROP TABLE SOME_TABLE;
CREATE TABLE SOME_TABLE (STUFFS);
INSERT INTO TABLE
SELECT * FROM OTHER_TABLE;
运行查询的开销不是问题。由于我们也有创建脚本。问题是,十亿行的INSERT OVERWRITE 比DROP + CREATE + INSERT INTO 快吗?
【问题讨论】:
-
Insert OVERWRITE确保从 HDFS 中删除了以前的数据,并且只有新数据在表/分区中可用。DROP + CREATE + INSERT INTO可能不保证相同。 -
@Ambrish 为什么/你能提供来源吗?我会假设 drop table 会完全删除表和所有旧数据。
标签: hive hiveql create-table hiveddl