删除并创建具有相同旧名称的新表后,Hadoop表中会显示旧记录

ecfsfe2w  于 2022-11-21  发布在  Hadoop
关注(0)|答案(1)|浏览(177)

我有一个关于在Hadoop中创建表的问题。我创建外部表的方式如下:

  1. CREATE EXTERNAL HADOOP TABLE SCHEMA.TABLENAME (
  2. ID BIGINT NOT NULL,
  3. CODE INTEGER,
  4. "VALUE" DOUBLE
  5. STORED AS ORC
  6. TBLPROPERTIES ('bigsql.table.io.doAs'='false',
  7. 'bucketing_version'='2',
  8. 'orc.compress'='ZLIB',
  9. 'orc.create.index'='true')

创建此表后,我运行Jenkins作业(使用sqoop进程),将70.000.000条记录加载到此表中。然后,我需要删除此表,因此我运行:

  1. DROP TABLE SCHEMA.TABLENAME

稍后,我想创建一个与前一个表同名的表,但我需要它为空。我进行了与前面相同的查询,我这样做:

  1. CREATE EXTERNAL HADOOP TABLE SCHEMA.TABLENAME (
  2. ID BIGINT NOT NULL,
  3. CODE INTEGER,
  4. "VALUE" DOUBLE
  5. STORED AS ORC
  6. TBLPROPERTIES ('bigsql.table.io.doAs'='false',
  7. 'bucketing_version'='2',
  8. 'orc.compress'='ZLIB',
  9. 'orc.create.index'='true')

但是当我以这种方式创建表时,它里面又有70.000.000条记录,尽管我没有运行任何作业来填充它。这就是为什么我有两个问题:
1.当我删除并创建具有旧名称的表时,是否会从旧表中恢复记录?
1.我如何删除(或截断)bigsql/hive中的表,以便我有一个旧名称的空表。
我正在使用bigsql和hive。

mo49yndu

mo49yndu1#

删除外部表不会删除存储的数据,而只会删除配置单元元数据存储区中的元数据。
参考Managed vs External Tables
要点...

  • 当文件已存在或位于远程位置时使用外部表
  • 即使删除表,文件也应保留

如果希望能够执行DROP和/或TRUNCATE,请创建托管表(从查询中删除EXTERNAL)。
或者在导入前运行Jenkins作业hadoop fs -rm -skipTrash

相关问题