0

我正在尝试在 Hive 中使用插入覆盖。基本上我想插入覆盖的不是完整的分区,而是分区中的几条记录。我没有找到任何解决方案(也基于非分区列上的过滤器在目标表中插入覆盖)。有什么办法可以实现吗?

4

2 回答 2

1

Hive 不是 RDBMS。不推荐您尝试使用 Hive 实现的目标。Hive 更适合对非常大的不可变数据集进行批处理。

但是,据我推断,您正在尝试更新表中的现有记录。为此,请在需要更新的表上启用 ACID 支持,您的更新查询将开始工作。

UPDATE <TABLE>
SET <COL1>='Value1',
SET <COL2>='Value2'
WHERE <Some Condition That Only Evaluates To The Rows You Need Updated>
于 2018-07-10T11:14:42.063 回答
1

Hive 不像常规 RDBMS,如果您想简单地更新记录,请执行 INSERT OVERWRITE TABLE Table_Name ...简单地更改一个临时表中的数据或使用 WITH 子句简单地插入覆盖......通过使用表分区......它是安全的.

查询[HIVE]:

WITH TEMP_TABLE AS (SELECT * FROM SOURCE_TABLE_NAME) INSERT OVERWRITE TABLE TARGET_TABLE_NAME SELECT * FROM TEMP_TABLE

于 2016-12-16T12:03:42.713 回答