truncate table ...删除所有数据.
truncate table partition (...)删除特定分区的数据.
保留目录结构.
外部表应首先转换为manged,.eg
alter table t set tblproperties('EXTERNAL'='FALSE');
Run Code Online (Sandbox Code Playgroud)
当我们完成后,我们可以将其转换回来
alter table t set tblproperties('EXTERNAL'='TRUE');
Run Code Online (Sandbox Code Playgroud)
create table t (i int) partitioned by (x char(1));
set hive.exec.dynamic.partition.mode=nonstrict;
insert into t partition (x) values (1,'A'),(2,'B'),(3,'C');
alter table t set tblproperties('EXTERNAL'='TRUE');
Run Code Online (Sandbox Code Playgroud)
select * from t;
Run Code Online (Sandbox Code Playgroud)
+-----+-----+
| t.i | t.x |
+-----+-----+
| 1 | A |
| 2 | B |
| 3 | C |
+-----+-----+
Run Code Online (Sandbox Code Playgroud)
dfs -ls -R /user/hive/warehouse/t;
Run Code Online (Sandbox Code Playgroud)
drwxrwxrwx - cloudera supergroup 0 2017-03-28 11:40 /user/hive/warehouse/t/x=A
-rwxrwxrwx 1 cloudera supergroup 2 2017-03-28 11:40 /user/hive/warehouse/t/x=A/000000_0
drwxrwxrwx - cloudera supergroup 0 2017-03-28 11:40 /user/hive/warehouse/t/x=B
-rwxrwxrwx 1 cloudera supergroup 2 2017-03-28 11:40 /user/hive/warehouse/t/x=B/000000_0
drwxrwxrwx - cloudera supergroup 0 2017-03-28 11:40 /user/hive/warehouse/t/x=C
-rwxrwxrwx 1 cloudera supergroup 2 2017-03-28 11:40 /user/hive/warehouse/t/x=C/000000_0
Run Code Online (Sandbox Code Playgroud)
truncate table t partition (x='B');
Run Code Online (Sandbox Code Playgroud)
FAILED:SemanticException [错误10146]:无法截断非托管表t.
alter table t set tblproperties('EXTERNAL'='FALSE');
Run Code Online (Sandbox Code Playgroud)
truncate table t partition (x='B');
Run Code Online (Sandbox Code Playgroud)
select * from t;
Run Code Online (Sandbox Code Playgroud)
+-----+-----+
| t.i | t.x |
+-----+-----+
| 1 | A |
| 3 | C |
+-----+-----+
Run Code Online (Sandbox Code Playgroud)
dfs -ls -R /user/hive/warehouse/t;
Run Code Online (Sandbox Code Playgroud)
drwxrwxrwx - cloudera supergroup 0 2017-03-28 11:40 /user/hive/warehouse/t/x=A
-rwxrwxrwx 1 cloudera supergroup 2 2017-03-28 11:40 /user/hive/warehouse/t/x=A/000000_0
drwxrwxrwx - cloudera supergroup 0 2017-03-28 11:42 /user/hive/warehouse/t/x=B
drwxrwxrwx - cloudera supergroup 0 2017-03-28 11:40 /user/hive/warehouse/t/x=C
-rwxrwxrwx 1 cloudera supergroup 2 2017-03-28 11:40 /user/hive/warehouse/t/x=C/000000_0
Run Code Online (Sandbox Code Playgroud)
truncate table t;
Run Code Online (Sandbox Code Playgroud)
+-----+-----+
| t.i | t.x |
+-----+-----+
Run Code Online (Sandbox Code Playgroud)
dfs -ls -R /user/hive/warehouse/t;
Run Code Online (Sandbox Code Playgroud)
drwxrwxrwx - cloudera supergroup 0 2017-03-28 11:43 /user/hive/warehouse/t/x=A
drwxrwxrwx - cloudera supergroup 0 2017-03-28 11:43 /user/hive/warehouse/t/x=B
drwxrwxrwx - cloudera supergroup 0 2017-03-28 11:43 /user/hive/warehouse/t/x=C
Run Code Online (Sandbox Code Playgroud)
alter table t set tblproperties('EXTERNAL'='TRUE');
Run Code Online (Sandbox Code Playgroud)