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中怎样删除分区的主要内容,如果未能解决你的问题,请参考以下文章