在配置单元表中插入覆盖分区-值被复制

qzwqbdag  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(455)

我用非分区表创建了一个配置单元表,并使用select查询将数据插入到分区的配置单元表中。
引用的站点
通过上面的链接,我的分区表包含重复的值。下面是SETP
这是我的样本员工dataset:link1
我尝试了以下查询:link2
但是在更新配置单元表中的值之后,
将员工ID为19的steven的工资更新为50000。
insert overwrite table unm\u parti\u trail partition(department='a')选择employeeid、firstname、designation,当employeeid=19时选择case,然后选择50000 else salary end as salary from unm\u parti\u trail;
值正在复制。

7       Nirmal  Tech    12000   A
7       Nirmal  Tech    12000   B

nirmal只放在a部门,但它被复制到b部门。
我做错什么了吗?
请建议。

2izufjch

2izufjch1#

一个可能的解决方案。
执行插入操作时,需要选择分区字段作为查询的最后一个字段。如:

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

有关详细信息,请参阅此链接。

6jygbczu

6jygbczu2#

似乎您忘记了上次插入的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';

相关问题