【发布时间】:2017-08-12 21:20:04
【问题描述】:
如何覆盖 hive 表的某些记录?
例如:
我有一个表 t1 有 100 条记录。现在我只需要覆盖这 100 条记录中的 30 条。
怎么做?
【问题讨论】:
如何覆盖 hive 表的某些记录?
例如:
我有一个表 t1 有 100 条记录。现在我只需要覆盖这 100 条记录中的 30 条。
怎么做?
【问题讨论】:
Hive 从 Hive-0.14 开始支持 ACID 属性。使用 Hive 事务,您可以更新或删除现有记录。
执行更新和删除操作需要遵循一些规则。您可以参考to this blog 了解 Hive 事务的更多详细信息和实现。
【讨论】:
我的声誉太低,无法直接回复您的评论,但这里有一个方法来完成它:
INSERT OVERWRITE TABLE table_a
SELECT * FROM table_a a WHERE a.id NOT IN (SELECT id FROM table_b)
UNION ALL
SELECT * FROM table_b;
【讨论】:
NOT IN 在这种情况下的行为方式是否与NOT EXISTS 相同? documentation 明确表示要使用 NOT EXISTS。