在配置单元中插入托管表如何影响另一个表中的数据?

vxf3dgd4  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(271)

如果我在下面的配置单元中有此托管表:

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 不再?

avwztpqn

avwztpqn1#

在选择过程中是否会移动外部表中的数据?不,不会的。这个 INSERT FROM SELECT 查询不是“移动”,而是“复制”
欢迎你来 hadoop fs -ls 要验证的外部表位置。
删除外部表数据的唯一方法是从磁盘中实际删除表位置。
在这种情况下是/user/hive/warehouse
仓库目录是可配置的,但我相信这是默认的,是的

beq87vna

beq87vna2#

SELECT * FROM Employee_Test 生成一组行(结果集),然后插入到 Employee . 因此 Employee_Test 将继续保留这些行。在合同中 LOAD DATA INPATH... 真的会吗 move 数据。

相关问题