HIVE更新声明中的多个表引用

时间:2015-02-23 07:11:55

标签: hadoop hive rdbms hiveql

我已经给出了更新声明,它在RDBMS中完美运行,但在HIVE中无效。目前在HIVE中,您不能引用多个表(如查询表TableA,引用的表B)

UPDATE A
FROM TableA A, TableB B
SET DepartmentId = B.DepartmentId
WHERE A.CustomerId = B.CustomerId ;

我需要你的帮助我如何在HIVE中实现同样的目标? HIVE可能的替代方案?

2 个答案:

答案 0 :(得分:1)

由于Hive不支持行级插入和更新,因此几乎没有解决方法。上面提到的答案就是这样的。 一种方法是做同样的事情并再次将覆盖插入到同一个表中。

INSERT OVERWRITE TABLE A. SELECT A.c1,A.c2,...,B.DepartmentId,.. 从表A A,表B B. 在哪里A.CustomerId = B.CustomerId;

这就像更新同一张表一样。

答案 1 :(得分:0)

Hive表是不可变的。所以无法更新。您始终可以重写整个表格:

CREATE TABLE TableA_new
AS
SELECT A.c1,A.c2, ... , B.DepartmentId , .. 
FROM TableA A, TableB B
WHERE A.CustomerId = B.CustomerId ;

答案部分属实,更新可从HIVE 0.14;)GL

获得