如果我在下面的配置单元中有此托管表:
CREATE TABLE Employee (
empId int,
name VARCHAR(100))
COMMENT 'Employees'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;
现在,如果我像这样插入上表:
INSERT INTO TABLE Employee SELECT * FROM Employee_Test;
自从 Employee
表是托管表,当我发出 INSERT INTO
上面的命令将从 Employee_Test
被永久移入 Employee
表目录(在本例中为 /user/hive/warehouse
因为它是一个托管表)?
因此,数据不会驻留在 Employee_Test
不再?
2条答案
按热度按时间avwztpqn1#
在选择过程中是否会移动外部表中的数据?不,不会的。这个
INSERT FROM SELECT
查询不是“移动”,而是“复制”欢迎你来
hadoop fs -ls
要验证的外部表位置。删除外部表数据的唯一方法是从磁盘中实际删除表位置。
在这种情况下是/user/hive/warehouse
仓库目录是可配置的,但我相信这是默认的,是的
beq87vna2#
SELECT * FROM Employee_Test
生成一组行(结果集),然后插入到Employee
. 因此Employee_Test
将继续保留这些行。在合同中LOAD DATA INPATH...
真的会吗move
数据。