我已经给出了更新声明,它在RDBMS中完美运行,但在HIVE中无效。目前在HIVE中,您不能引用多个表(如查询表TableA,引用的表B)
UPDATE A
FROM TableA A, TableB B
SET DepartmentId = B.DepartmentId
WHERE A.CustomerId = B.CustomerId ;
我需要你的帮助我如何在HIVE中实现同样的目标? HIVE可能的替代方案?
答案 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
获得