sql - Alter Table/Partition“连接”命令的工作
问题描述
想知道该命令是如何工作的,在https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterTable/PartitionConcatenateAlter Table/Partition Concatenate
上找不到太多。
假设我在特定分区上运行此命令,同时我SELECT
在同一分区上运行命令。
是否存在竞争条件,我试图在 concatenate 命令删除该分区中已经存在的多个文件并且尚未用它创建的临时文件夹中的新组合文件替换它时读取它。
复制这将是困难的,如果有人有任何想法,请帮助!
解决方案
会有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
在表上您的选择查询将在队列中等待。
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>;
推荐阅读
- python-3.x - 使用 functools.reduce 时出现属性错误
- python - discord.py on_member_join 不工作@bot.event
- php - Apple ID p8 按键操作
- python - 如何使用输入 Python3 多次运行代码
- r - 基于部分字符串匹配比较两个数据帧的两列
- c - 尝试在 C 中创建基本套接字连接并在 accept() 上运行到无限循环
- excel - 从 excel 宏更改 word doc 中的链接
- asp.net-core - 将带有列表的 JSON 发送到控制器
- svg - 如何旋转svg圆
- docker - 在 docker build 中连接到 dotnet.testcontainer 失败并显示消息“无法分配请求的地址 /var/run/docker.sock”