在Hive中最相当于SQL Server UPDATE命令

时间:2013-01-09 18:24:40

标签: sql sql-server hadoop hive

UPDATE SET中SQL Server Hive命令的最佳(较便宜)等价物是什么?

例如,考虑我想要转换以下查询的情况:

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

等效Hive查询。

3 个答案:

答案 0 :(得分: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

请注意,如果必须在分区表上执行此操作(很可能是因为您有大量数据),则在执行此操作时可能需要覆盖您的分区。

答案 1 :(得分:0)

您可以创建一个外部表并使用'insert overwrite into local directory',如果您想更改列值,可以使用'CASE WHEN','IF'或其他条件操作。并将输出文件复制回HDFS位置。

答案 2 :(得分:0)

您可以将配置单元升级到0.14.0

从0.14.0 hive开始,支持UPDATE操作。

为了做到这一点,我们需要创建一个hive表,使它们支持 ACID 输出格式,并且需要在 hive-site.xml <中设置其他属性/强>

How to do CURD operations in Hive