sql - 更改表/分区的工作 “Concatenate”命令

标签 sql apache-spark hadoop hive apache-spark-sql

想知道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/

相关文章:

mysql - 加入查询时出现问题

apache-spark - 如何为 Kafka Connect 和 Spark 注册和使用 AVRO Schema?

scala - Spark 2.2 非法模式组件 : XXX java. lang.IllegalArgumentException:非法模式组件:XXX

python - mrjob:在 EMR 上设置日志记录

hadoop - 使用 Distcp 在 Hadoop 中提取数据

java - 如何允许 apache hive 处理多个客户端查询

java - SQL DATE 与 java.sql.Date 中的时区

MySQL 按小时分组

php - 从没有唯一列的表中检索第二高点

python - PySpark:向数据框行元素添加新字段