什么是最好(更便宜)的sql server UPDATE SET 命令输入 Hive ?例如,考虑我要转换以下查询的情况:
UPDATE SET
Hive
UPDATE TABLE employee SET visaEligibility = 'YES' WHERE experienceMonths > 36
相当于 Hive 查询。
whitzsjs1#
我假设您有一个没有分区的表,在这种情况下,您应该能够执行以下命令:
INSERT OVERWRITE TABLE employee SELECT employeeId,employeeName, experienceMonths ,salary, CASE WHEN experienceMonths >=36 THEN ‘YES’ ELSE visaEligibility END AS visaEligibility FROM employee;
还有其他的方法,但它们更复杂,我认为贝乔伊描述的方法是最有效的。(来源:bejoy ks博客)请注意,如果必须在分区表上执行此操作(如果您有大量数据,则很可能需要执行此操作),则可能需要在执行此操作时覆盖分区。
m3eecexj2#
您可以将配置单元升级到0.14.0从0.14.0开始,配置单元支持更新操作。为此,我们需要创建配置单元表,以便它们支持acid输出格式,并且需要在hive-site.xml中设置其他属性。如何在 hive 里做凝乳手术
gmol16393#
您可以创建一个外部表并使用“insert overwrite into local directory”,如果您想更改列值,可以使用“case-when”、“if”或其他条件操作。并将输出文件复制回hdfs位置。
3条答案
按热度按时间whitzsjs1#
我假设您有一个没有分区的表,在这种情况下,您应该能够执行以下命令:
还有其他的方法,但它们更复杂,我认为贝乔伊描述的方法是最有效的。
(来源:bejoy ks博客)
请注意,如果必须在分区表上执行此操作(如果您有大量数据,则很可能需要执行此操作),则可能需要在执行此操作时覆盖分区。
m3eecexj2#
您可以将配置单元升级到0.14.0
从0.14.0开始,配置单元支持更新操作。
为此,我们需要创建配置单元表,以便它们支持acid输出格式,并且需要在hive-site.xml中设置其他属性。
如何在 hive 里做凝乳手术
gmol16393#
您可以创建一个外部表并使用“insert overwrite into local directory”,如果您想更改列值,可以使用“case-when”、“if”或其他条件操作。并将输出文件复制回hdfs位置。