想知道Alter Table/Partition Concatenate
命令是如何工作的,在https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterTable/PartitionConcatenate上找不到很多。
假设我在特定分区上运行此命令,同时在同一分区上运行SELECT
命令。
是否可能存在争用情况,当连接命令删除该分区中已经存在的多个文件并且尚未从其创建的temp文件夹中将其替换为新的合并文件时,我尝试读取该文件。
复制此代码将很困难,如果有人有任何想法请帮助!
最佳答案
将存在 no race
条件,当我们运行alter table <tb_name> concatenate;
时,将在表Exclusive
上获取 (if specific partition mentioned then lock on that specific partition only)
锁。Exclusive Lock
作业完成后,将释放 MR
。
然后,将仅在表上执行 Select query
,直到选择查询表上的 Exclusive lock
才在队列中等待。
From Official Hive Documentation:
Hive Command Locks Acquired
--------------------------------------- ---------------
alter table T1 partition P1 concatenate | EXCLUSIVE Lock on T1.P1
alter table T1 concatenate | EXCLUSIVE Lock on T1
To check locks on specific Hive table:
show locks <db>.<tb_name>;
关于sql - 更改表/分区的工作 “Concatenate”命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59793476/