hive清空外部表的三种方式
本文为转载,原文链接:
https://blog.csdn.net/lixiaoksi/article/details/106919895
https://blog.csdn.net/elizabethxxy/article/details/108912884
本文总结hive中清空外部表的三种方式
hive版本:2.1.1
环境准备
新建一张外部表:
create external table test_external (name String,age int,sex String) stored as orc;
插入数据:
insert into table test_external values("johnson",18,"男");
查看数据:
如果此时使用truncate 命令的话,会抛出错误信息 FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table test_external.
那如果在实际场景中,需要去清空外部表,我们该怎么办呢?
方式一:将外部表文件所在目录指定成一个空的目录
alter table test_external set location 'hdfs://bd227:8020/opt/hive/warehouse/test_external_like';
方式二:使用命令 set TBLPROPERTIES('EXTERNAL'='false') 将外部表变为内部表后,执行truncate命令,然后再更改为外部表
1:alter table test_external set TBLPROPERTIES('EXTERNAL'='false');
此时查看建表语句,external关键字已不存在,说明已变成了受hive meta store 管理的内部表
2:truncate table test_external;
执行truncate 命令,将表清空,查看hdfs上对应表的路径下,文件也一并被清空
3:alter table test_external set TBLPROPERTIES('EXTERNAL'='true');
将表属性更改为外部表 set TBLPROPERTIES('EXTERNAL'='true')
方式三:使用 insert overwrite 语句代替实现 truncate 功能
1:新建一张临时表 test_external_temp; 该表结构与外部表的表结构一样。
create temporary table test_external_temp (name String,age int,sex String) stored as orc;
注意:该临时表只对当前会话有效。倘若你创建了临时表,重新打开一个hive cli,此时你找不到这张表
2:执行 insert overwrite table test_external select * from test_external_temp; 使用overwrite 关键字执行了清空表操作
补充:根据官网描述
Starting Hive 4.0.0 ( HIVE-19981 - Managed tables converted to external tables by the HiveStrictManagedMigration utility should be set to delete data when the table is dropped RESOLVED ) setting table property external.table.purge=true, will also delete the data.
Hive 4.0.0开始,亦可使用 external.table.purge=true 也可清空表数据。
hive清空外部表的三种方式相关推荐
- hive 中创建表的三种方式
官网地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL 通常我们所使用的创建hive表有三种方式 1.crea ...
- 引入CSS样式表的三种方式
引入CSS样式表的三种方式 行内样式 通过标签的style属性来设置元素的样式,其基本语法格式如下: <h1 style="color:red;">style属性的应用 ...
- Android Studio导入外部资源的三种方式
在Android Studio打开导入外资源的路径:File->Project Structure- 第一步:选择Dependencies 第二步:选择要添加依赖的modules 第三步:为mo ...
- go引入外部依赖的三种方式:go get,go module,vendor目录
本文转载自golang 引入外部包的三种方式:go get, go module, vendor目录_guoguolifang的博客-CSDN博客_golang 外部包 import "g ...
- mysql表删除回滚_MySQL删除表的三种方式(小结)
drop table drop 是直接删除表信息,速度最快,但是无法找回数据 例如删除 user 表: drop table user; truncate (table) truncate 是删除表数 ...
- Hive--临时表的三种方式
一.临时数据方案 1.with as 1.1 使用demo with t1 as ( select imei ,src_pkg ,src_typ ...
- CSS入门-创建CSS样式表的三种方式
一.三种方式 创建 CSS 样式表有三种方式: 1. 元素内嵌样式: 2. 文档内嵌样式3. 外部引入样式. 元素内嵌样式: 即在当前元素使用 style 属性的声明方式,"这是一段文本&q ...
- android java调用_关于Android中Java调用外部命令的三种方式
此所谓三种方式,只是个人认为.本人还是菜鸟初涉,所以有所错误,请指正. 个人认为,Java调用外部命令.无非三种情况: 一.是只执行命令,不考虑返回值. 二.是执行命令的同时,还需要得到返回值. 三. ...
- MySQL删除表的三种方式
文章目录 drop table truncate (table) delete from 三种方式的区别 用法总结 drop table drop 是直接删除表信息,速度最快,但是无法找回数据 例如删 ...
- html中引入css样式表的三种方式,css引用的几种方式是什么?
HTML怎么引用CSS样式?css引用的几种方式是什么?下面本篇文章就来给大家介绍一下在HTML中引用CSS样式的几种方法,希望对大家有所帮助. 1.行内式 在HTML标签中,使用style属性设置C ...
最新文章
- 二叉树简介及C++实现
- 匿名黑客Anonymous实施的8次最强攻击
- [BZOJ 1002] [FJOI 2007] 轮状病毒
- 如何去maven仓库下载jar包
- c++中的类型转换--reinterpret_cast
- mysql驱动profilesql_java连接mysql的驱动配置问题
- xml文件转换成图片_怎样能把PDF文件转换成图片?
- php response响应,9. 响应 (Response)
- SSM学习系列(五) Spring MVC 几种跳转方式
- spring框架中Bean的基本属性及调用外部properties等配置文件的方法介绍
- 顶部吸附_吸附脱附催化燃烧的工作原理
- python 组合求和_39. 组合总和(Python)
- 文本分类pytorch Bert fine tune
- layui时间选择30分钟为单位_layui 时间选择器实现季度选择器
- 易语言批量替换html,易语言实现批量文本替换操作的代码
- Easy CHM使用简明教程
- 关于Froala Editor的简单使用
- To King Cover
- 如何手动创建NVivo主题节点?
- 如何使用网易邮箱大师登录网易企业邮箱?