本文为转载,原文链接:

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清空外部表的三种方式相关推荐

  1. hive 中创建表的三种方式

    官网地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL 通常我们所使用的创建hive表有三种方式 1.crea ...

  2. 引入CSS样式表的三种方式

    引入CSS样式表的三种方式 行内样式 通过标签的style属性来设置元素的样式,其基本语法格式如下: <h1 style="color:red;">style属性的应用 ...

  3. Android Studio导入外部资源的三种方式

    在Android Studio打开导入外资源的路径:File->Project Structure- 第一步:选择Dependencies 第二步:选择要添加依赖的modules 第三步:为mo ...

  4. go引入外部依赖的三种方式:go get,go module,vendor目录

    本文转载自golang 引入外部包的三种方式:go get, go module, vendor目录_guoguolifang的博客-CSDN博客_golang 外部包 import  "g ...

  5. mysql表删除回滚_MySQL删除表的三种方式(小结)

    drop table drop 是直接删除表信息,速度最快,但是无法找回数据 例如删除 user 表: drop table user; truncate (table) truncate 是删除表数 ...

  6. Hive--临时表的三种方式

    一.临时数据方案 1.with as 1.1 使用demo with t1 as (     select         imei         ,src_pkg         ,src_typ ...

  7. CSS入门-创建CSS样式表的三种方式

    一.三种方式 创建 CSS 样式表有三种方式: 1. 元素内嵌样式: 2. 文档内嵌样式3. 外部引入样式. 元素内嵌样式: 即在当前元素使用 style 属性的声明方式,"这是一段文本&q ...

  8. android java调用_关于Android中Java调用外部命令的三种方式

    此所谓三种方式,只是个人认为.本人还是菜鸟初涉,所以有所错误,请指正. 个人认为,Java调用外部命令.无非三种情况: 一.是只执行命令,不考虑返回值. 二.是执行命令的同时,还需要得到返回值. 三. ...

  9. MySQL删除表的三种方式

    文章目录 drop table truncate (table) delete from 三种方式的区别 用法总结 drop table drop 是直接删除表信息,速度最快,但是无法找回数据 例如删 ...

  10. html中引入css样式表的三种方式,css引用的几种方式是什么?

    HTML怎么引用CSS样式?css引用的几种方式是什么?下面本篇文章就来给大家介绍一下在HTML中引用CSS样式的几种方法,希望对大家有所帮助. 1.行内式 在HTML标签中,使用style属性设置C ...

最新文章

  1. 二叉树简介及C++实现
  2. 匿名黑客Anonymous实施的8次最强攻击
  3. [BZOJ 1002] [FJOI 2007] 轮状病毒
  4. 如何去maven仓库下载jar包
  5. c++中的类型转换--reinterpret_cast
  6. mysql驱动profilesql_java连接mysql的驱动配置问题
  7. xml文件转换成图片_怎样能把PDF文件转换成图片?
  8. php response响应,9. 响应 (Response)
  9. SSM学习系列(五) Spring MVC 几种跳转方式
  10. spring框架中Bean的基本属性及调用外部properties等配置文件的方法介绍
  11. 顶部吸附_吸附脱附催化燃烧的工作原理
  12. python 组合求和_39. 组合总和(Python)
  13. 文本分类pytorch Bert fine tune
  14. layui时间选择30分钟为单位_layui 时间选择器实现季度选择器
  15. 易语言批量替换html,易语言实现批量文本替换操作的代码
  16. Easy CHM使用简明教程
  17. 关于Froala Editor的简单使用
  18. To King Cover
  19. 如何手动创建NVivo主题节点?
  20. 如何使用网易邮箱大师登录网易企业邮箱?

热门文章

  1. pycharm 文件名不同颜色所代表的含义
  2. redis 复制功能测试(转阿辉的百度空间)
  3. element表格序号排序
  4. Word 页眉 页脚 出现一条横线删不掉
  5. 操作系统国产化,你支持吗?鸿蒙OS万物互联!
  6. express文件上传中间件Multer详解
  7. 中国新能源汽车行业十四五展望规划与投资决策建议报告2022版
  8. 利用反射等离激元超表面的模拟光计算
  9. 第二章笔记:计数初步
  10. English trip V1 - 1.How Do You Feel Now? Teacher:Lamb Key:形容词(Adjectives)