2013-01-09 48 views
1

什麼是Hive中的SQL Server UPDATE SET命令的最佳(較便宜)等效項?Hive中的SQL Server UPDATE命令的最佳等效

例如,考慮中,我想下面的查詢轉換的情況:

UPDATE TABLE employee 
SET visaEligibility = 'YES' 
WHERE experienceMonths > 36 

等效Hive查詢。

回答

2

我假設你有一個表沒有分區,在這種情況下,你應該能夠做到以下命令:

INSERT OVERWRITE TABLE employee SELECT employeeId,employeeName, experienceMonths ,salary, CASE WHEN experienceMonths >=36 THEN ‘YES’ ELSE visaEligibility END AS visaEligibility FROM employee; 

還有其他的方法,但他們更令人費解,我的思考方式Bejoy描述的是最高效的。

(來源:Bejoy KS blog

需要注意的是,如果你有這樣做的一個分區表(這很可能是,如果你有大量的數據),你可能需要重寫你的分區執行此操作時。

0

您可以創建一個外部表並使用'insert overwrite into local directory',如果您想更改列值,可以使用'CASE WHEN','IF'或其他條件操作。然後將輸出文件複製回HDFS位置。

0

您可以將蜂巢升級到0.14.0

起價0.14.0蜂巢支持更新操作。

要做到的,我們需要創建蜂房表,例如,他們支持ACID輸出格式和需要蜂房的site.xml設置額外屬性。

How to do CURD operations in Hive