我有一个关于在Hadoop中创建表的问题。我创建外部表的方式如下:
CREATE EXTERNAL HADOOP TABLE SCHEMA.TABLENAME (
ID BIGINT NOT NULL,
CODE INTEGER,
"VALUE" DOUBLE
STORED AS ORC
TBLPROPERTIES ('bigsql.table.io.doAs'='false',
'bucketing_version'='2',
'orc.compress'='ZLIB',
'orc.create.index'='true')
创建此表后,我运行Jenkins作业(使用sqoop进程),将70.000.000条记录加载到此表中。然后,我需要删除此表,因此我运行:
DROP TABLE SCHEMA.TABLENAME
稍后,我想创建一个与前一个表同名的表,但我需要它为空。我进行了与前面相同的查询,我这样做:
CREATE EXTERNAL HADOOP TABLE SCHEMA.TABLENAME (
ID BIGINT NOT NULL,
CODE INTEGER,
"VALUE" DOUBLE
STORED AS ORC
TBLPROPERTIES ('bigsql.table.io.doAs'='false',
'bucketing_version'='2',
'orc.compress'='ZLIB',
'orc.create.index'='true')
但是当我以这种方式创建表时,它里面又有70.000.000条记录,尽管我没有运行任何作业来填充它。这就是为什么我有两个问题:
1.当我删除并创建具有旧名称的表时,是否会从旧表中恢复记录?
1.我如何删除(或截断)bigsql/hive中的表,以便我有一个旧名称的空表。
我正在使用bigsql和hive。
1条答案
按热度按时间mo49yndu1#
删除外部表不会删除存储的数据,而只会删除配置单元元数据存储区中的元数据。
参考Managed vs External Tables
要点...
如果希望能够执行DROP和/或TRUNCATE,请创建托管表(从查询中删除
EXTERNAL
)。或者在导入前运行Jenkins作业
hadoop fs -rm -skipTrash
。