在Hive表中插入覆盖分区 - 值重复

时间:2014-11-13 06:54:10

标签: hadoop hive external

我使用非分区表创建了一个Hive表,并使用select query我将数据插入到分区 Hive表中。

Refered site

  1. 通过以上链接,我的分区表包含重复值。以下是setps
  2. 这是我的Sample员工数据集:link1

    我尝试了以下查询:link2

    但在更新Hive表中的值后,

    将员工ID为19的Steven更新为50000。

      

    INSERT OVERWRITE TABLE Unm_Parti_Trail PARTITION(Department ='A')   SELECT employeeid,名字,名称,CASE WHEN employeeid = 19那么   50000 ELSE薪水END作为工资来自Unm_Parti_Trail;

    值正在重复。

    7       Nirmal  Tech    12000   A
    7       Nirmal  Tech    12000   B
    

    Nirmal只被部署在 A 部门,但它被复制到部门 B

    我做错了吗?

    请建议。

2 个答案:

答案 0 :(得分:2)

您似乎忘记了上一次INSERT OVERWRITE中的WHERE子句:

INSERT INTO TABLE Unm_Parti_Trail PARTITION (Department = 'A') 
SELECT employeeid,firstname,designation, CASE WHEN employeeid=19 
THEN 50000 ELSE salary END AS salary FROM Unm_Parti_Trail 
WHERE department = 'A';

答案 1 :(得分:1)

一种可能的解决方案。

进行插入时,必须在查询中选择分区字段作为最后。例如:

INSERT INTO TABLE Unm_Parti_Trail PARTITION(department='A') 
SELECT EmployeeID, FirstName,Designation,Salary, Department 
FROM Unm_Dup_Parti_Trail
WHERE department='A';

有关详情,请参阅 link