Hive表删除数据不支持使用Delete From...

简介: Hive表删除数据不支持使用Delete From...

前言:

今天在做数据仓库项目,通过persto向hive插入数据的时候,插入了两次不同的数据。这就导致需要删除掉其中插入错误的数据,我第一反应是使用 delete from .........


结果:报错了!!!


org.apache.hadoop.hive.ql.parse.SemanticException:Attempt to do update or delete using transaction manager that does not support these operations.


大致是说:不支持这些操作的事务管理器进行更新或删除

报错:

突然想起来了不能这样搞!

Hive表 删除数据不支持使用Delete From......

 

那Hive表如何删除部分数据呢?

一、概述

hive 表删除部分数据不支持使用 Delete From table_name where ...语句


hive表删除数据要分为不同的粒度:table、partition、partition内


二、有 Partition 分区表

有分区字段的数据表,删除数据时要注意分两种情况:

1、有分区字段的数据表,删除数据时要注意分两种情况:

--删除一个分区的数据
alter table table_name drop partition(partiton_name='value')
-- 删除多个分区的数据
alter table table_name drop partition(partiton_name<'value')
alter table table_name drop partition(partiton_name<='value')
alter table table_name drop partition(partiton_name>'value')
alter table table_name drop partition(partiton_name>='value')

2、删除分区内部的部分数据,这时使用重写方式对满足条件的分区进行 overweight 操作,并通过 where 来限定需要的信息,未过滤的的信息将被删除,具体代码格式如下:

insert overwrite table table_name partition(partition_name='value') 
select column1,column2,column2 FROM table_name
where partition_name='value' and column2 is not null

三、没有 Partition 分区表

1、直接清空数据,再插入需要的数据,具体代码格式如下:

truncate table database.tablename

2、通过 overweight 对所有数据重写,具体代码格式如下:

1. insert overweight table table_name 
2. select * from table_name WHERE column is not null  --限制条件可以自行修改

我的解决方法:

由于我的数据表没有进行分区,所以我直接清空了数据,又把正确的数据插入了一遍。

吐槽:第一次搞数据仓库项目,好艰难!

但是我会加油的!

 

好啦,本次总结结束,我继续搞项目啦!

目录
相关文章
|
2月前
|
SQL 存储 HIVE
Hive中的表是如何定义的?请解释表的结构和数据类型。
Hive中的表是如何定义的?请解释表的结构和数据类型。
58 0
|
2月前
|
SQL 消息中间件 数据处理
DataX读取Hive Orc格式表丢失数据处理记录
DataX读取Hive Orc格式表丢失数据处理记录
167 0
|
8月前
|
SQL HIVE
49 Hive修改表
49 Hive修改表
22 0
49 Hive修改表
|
11天前
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
20 1
|
2月前
|
SQL 关系型数据库 MySQL
Hive 表注释乱码解决
Hive元数据在MySQL默认使用`latin1`字符集导致注释乱码。可通过修改MySQL配置文件`/etc/my.cnf`,在`[mysqld]`和末尾添加`character-set-server=utf8`等设置,重启MySQL。然后在Hive数据库中调整表字段、分区字段、索引注释的字符集。注意,这仅对新表生效。测试创建带注释的Hive表,问题解决。
|
2月前
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别
|
2月前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
56 1
|
2月前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
40 0
|
2月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
SQL 分布式计算 关系型数据库
Sqoop数据导入到Hive表的最佳实践
Sqoop数据导入到Hive表的最佳实践