hive中怎样删除分区

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive中怎样删除分区相关的知识,希望对你有一定的参考价值。

参考技术A 清除扇区数据,会经磁盘中的清零并用随机字符重写,这样操作后
数据就再没有办法恢复
清除扇区数据的时候可以选择某个分区进行
删除所有分区
会将所有分区删除
详细看软件的使用教程或是咨询客服吧
参考技术B 准备好环境,小编这边环境已经有了,就不讲解如何搭建环境,毕竟搭建一套大数据需要一段时间的。
准备一个分区表
show
partitions
表名
方法1:使用hive自带sql语法进行删除
alter
table
表名
drop
partition
(etl_dt=20161118);
再次查看20161118分区还在不在,如果分区不在了,说明该分区已经被删除,数据也已被清空。
show
partitions
表名;
方法2:采用hdfs命令进行清空
这个表还剩下一个分区,咱们把这个分区也清空。
先使用hdfs查看该表实际分区以及数据目录在哪
hdfs
dfs
-ls
/user/hive/warehouse/tbdata.db/表名小写/
或者
hadoop
fs
-ls
/user/hive/warehouse/tbdata.db/表名小写/
两个命令效果一样
使用hdfs命令删除该分区20161124目录
hdfs
dfs
-rm
-r
-f
/user/hive/warehouse/tbdata.db/表名小写/etl_dt=20161124
最后在查看没有分区目录了
最查看进hive命令行查看此表是否还有数据

从 Hive 分区外部表中删除特定列

【中文标题】从 Hive 分区外部表中删除特定列【英文标题】:Remove specific column from Hive Partitioned external table 【发布时间】:2018-10-31 22:37:48 【问题描述】:

我想从一个巨大的 hive 分区表中删除其中一列。想知道我该怎么做。这是我尝试过的如下。

DDL:

CREATE TABLE xyz.test_change (a int, b int, c int);

ALTER 命令:

 ALTER TABLE xyz.test_change REPLACE COLUMNS (a int, b int);

错误:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Replacing columns cannot drop columns for table xyz.test_change. SerDe may be incompatible

org.apache.hadoop.hive.ql.metadata.HiveException: Replacing columns cannot drop columns for table xyz.test_change. SerDe may be incompatible

【问题讨论】:

你能把你正在使用的蜂巢版本、元存储也包括进来吗? 【参考方案1】:

REPLACE COLUMNS 仅支持使用原生 SerDe (DynamicSerDe, MetadataTypedColumnsetSerDe, LazySimpleSerDe and ColumnarSerDe).

确保该表具有上面定义的本机 Serde 之一。

您可以在此处参考更多详细信息:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Add/ReplaceColumns

【讨论】:

以上是关于hive中怎样删除分区的主要内容,如果未能解决你的问题,请参考以下文章

生产中Hive静态和动态分区表,该怎样抉择呢?

怎样删除hive和hbase映射表

hive怎样取出字段包含的所有特殊字符

关于怎样删除EFI分区,简单省事,很多换下来的硬盘都有这个分区 Mac综合讨论区

Hive分区的作用

在Impala 和Hive里进行数据分区