Hive 删除带有复合主键的行

让·W

Hive 中的 ACID 属性允许使用以下语法从表中删除行:

DELETE FROM table 
WHERE id IN (SELECT id FROM raw_table)

但是,当 primary_key 由多列组成时,删除行的最佳解决方案是什么?

我用 EXISTS 尝试了以下操作:

DELETE FROM table 
WHERE EXISTS (SELECT id1, id2 FROM raw_table 
              WHERE raw_table.id1 = table.id1 AND raw_table.id2 = table.id2) 

或以下(连接所有列,不确定这是否有效):

DELETE FROM table 
WHERE CONCAT(id1, id2) IN (SELECT CONCAT(id1, id2) FROM raw_table)

您对最佳解决方案有什么建议吗?

赫拉戈斯

使用存在的解决方案是有效的。此外,您的连接值的解决方案是有效的,但根据您可以找到的值,您可能会删除您不想要的数据,例如

id1: 01
id2: 1

您将删除带有 011 的行,但它也与

id1: 0
id2: 11

这是意料之中的。我建议在 ids 之间添加一个分隔符。

DELETE FROM table 
WHERE CONCAT(id1, id2) IN (SELECT CONCAT(CONCAT(id1,"-"), id2) FROM raw_table)

两种解决方案都应该只执行 1 个带有映射器和缩减阶段的作业,因此执行计划和性能应该几乎相同

问候!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Sql删除带有复合主键的孤立记录

来自分类Dev

在Hive中删除分区

来自分类Dev

带有其他列的Hive UDTF

来自分类Dev

使用Hive删除特殊字符

来自分类Dev

删除Hive中的尾随字母

来自分类Dev

如何更新Hive表行

来自分类Dev

具有参数的Hive UDF

来自分类Dev

所有Hive功能失败

来自分类Dev

Hive-合并带有搜索项子字符串的行

来自分类Dev

带有复合主键查询的JPA COUNT不起作用

来自分类Dev

带有外键的Spring Save复合主键

来自分类Dev

带有Hortonworks Hive / HBase / Spark集成的Microsoft PowerBI

来自分类Dev

使用带有kerberos keytab的jdbc访问Hive Metastore

来自分类Dev

Apache Spark Hive,带有Maven阴影的可执行JAR

来自分类Dev

在 Hive 中插入带有分区字段的数据列表列

来自分类Dev

带有 hive 插件的 apache ranger - 需要保留哪些对象

来自分类Dev

带有 MySQL 的 Hive-2.3.2 Metastore 无法启动

来自分类Dev

带有外部 mysql 的 hive Metastore 不起作用

来自分类Dev

如何在Hive hadoop数据库中删除行

来自分类Dev

使用PIG或HIVE从CSV删除前两行

来自分类Dev

在Hive中删除具有相同前缀的多个表

来自分类Dev

如何删除具有动态值的 hive 分区

来自分类Dev

如何从Hive的字段中删除美元符号($)?

来自分类Dev

使用 Presto + Hive 删除分区的最佳方法

来自分类Dev

带有示例示例的 Hive 横向视图,其中 Hive 表具有 2 列作为数组

来自分类Dev

在Hive中选择前2行

来自分类Dev

通过HIVE查询中的行减去/循环

来自分类Dev

hive 是否允许列名作为“行”?

来自分类Dev

HIVE:输出中没有列名