什麼是Hive
中的SQL Server UPDATE SET
命令的最佳(較便宜)等效項?Hive中的SQL Server UPDATE命令的最佳等效
例如,考慮中,我想下面的查詢轉換的情況:
UPDATE TABLE employee
SET visaEligibility = 'YES'
WHERE experienceMonths > 36
等效Hive
查詢。
什麼是Hive
中的SQL Server UPDATE SET
命令的最佳(較便宜)等效項?Hive中的SQL Server UPDATE命令的最佳等效
例如,考慮中,我想下面的查詢轉換的情況:
UPDATE TABLE employee
SET visaEligibility = 'YES'
WHERE experienceMonths > 36
等效Hive
查詢。
我假設你有一個表沒有分區,在這種情況下,你應該能夠做到以下命令:
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)
需要注意的是,如果你有這樣做的一個分區表(這很可能是,如果你有大量的數據),你可能需要重寫你的分區執行此操作時。
您可以創建一個外部表並使用'insert overwrite into local directory',如果您想更改列值,可以使用'CASE WHEN','IF'或其他條件操作。然後將輸出文件複製回HDFS位置。
您可以將蜂巢升級到0.14.0
起價0.14.0蜂巢支持更新操作。
要做到的,我們需要創建蜂房表,例如,他們支持ACID輸出格式和需要蜂房的site.xml設置額外屬性。