Hive 临时表自动删除

Posted

技术标签:

【中文标题】Hive 临时表自动删除【英文标题】:Hive temporary table auto deletion 【发布时间】:2016-11-24 16:29:18 【问题描述】:

在练习期间,我在 hive 提示符中使用以下查询创建了 tmp 表。

$create temporary table tmp (id int);

现在表已成功创建,如果我关闭配置单元会话表将被配置单元自动删除,根据文档,这是正确的。

现在,还有其他方法可以使用以下命令运行相同的查询。

$hive -e 'create temporary table tmp (id int);'

table 已成功创建,但我的 怀疑 是这次,为什么 tmp table 不会被自动删除。执行下一条命令后,我仍然可以看到 tmp 表。

$hive -e 'show tables;'
OK
customers
order
product
tmp
Time taken: 0.856 seconds, Fetch: 4 row(s)

【问题讨论】:

【参考方案1】:

很可能您已经拥有同名但不是临时的表。

复制步骤:

我已经检查过没有这样的表(不是临时的)已经存在。

hive -e 'use myschema; show tables "tmp";'
--no rows returned

然后我运行了您的示例:

$hive -e 'use myschema; create temporary table tmp (id int);'
OK

检查没有表:

hive -e 'use myschema; show tables "tmp";'
--no rows returned - it works correctly

创建不是临时的

hive -e 'use myschema; create table tmp (id int);'
--ok

现在有了持久化表:

hive -e 'use myschema; show tables "tmp";'
OK
tmp
Time taken: 0.081 seconds, Fetched: 1 row(s)

尝试创建相同的临时表:

hive -e 'use myschema; create temporary table tmp (id int);'
OK

持久表保留在架构中。临时表已成功删除,临时表在会话内被隔离,对其他会话不可见。

【讨论】:

以上是关于Hive 临时表自动删除的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 中删除全局临时表 (##tempTable)

触发器实现源表操作(增,删,改)自动补录操作日志

临时表,临时表什么时候删除

数据库——创建局部临时表和全局临时表

HIVE - 插入覆盖与删除表 + 创建表 + 插入

MySQL 临时表:创建删除语法剖析