我已經給出了RDBMS中完美工作的更新聲明,但未在HIVE中工作。目前在HIVE,你不能有多個表的基準(如查詢表表A,表B中引用)HIVE更新聲明中的多表引用
UPDATE A
FROM TableA A, TableB B
SET DepartmentId = B.DepartmentId
WHERE A.CustomerId = B.CustomerId ;
我需要你對我怎樣才能實現HIVE相同的幫助? HIVE中可能的替代方案?
我已經給出了RDBMS中完美工作的更新聲明,但未在HIVE中工作。目前在HIVE,你不能有多個表的基準(如查詢表表A,表B中引用)HIVE更新聲明中的多表引用
UPDATE A
FROM TableA A, TableB B
SET DepartmentId = B.DepartmentId
WHERE A.CustomerId = B.CustomerId ;
我需要你對我怎樣才能實現HIVE相同的幫助? HIVE中可能的替代方案?
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
由於蜂巢不支持行級刀片和很少有解決方法的更新。上面提到的答案就是這樣。 一種方法是做同樣的事情,並再次將覆蓋插入到同一個表中。
INSERT OVERWRITE表A SELECT A.c1,A.c2,...,B.DepartmentId,.. FROM表A A,表B乙 WHERE A.CustomerId = B.CustomerId;
這將會像更新同一張表一樣。
請參閱https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Update – Sanjiv 2015-02-23 10:22:00
我指的是事務支持自Hive 0.14以來的行級可用。請參閱[HIVE更新](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Update)。你指的是CREATE TABLE AS ..這不是我正在談論的情況.... – Sanjiv 2015-02-23 10:02:44