在Hive中插入覆盖

时间:2013-11-15 08:49:06

标签: hive

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

2 个答案:

答案 0 :(得分:0)

Hive不是常规RDBMS,如果要更新记录,请执行INSERT OVERWRITE TABLE Table_Name ...在一个临时表中简单更改数据或使用WITH子句简单地使用表分区插入overwrite..by。这是安全的。

QUERY [HIVE]:

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

答案 1 :(得分:0)

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>