我想知道如果hive SELECT和INSERT OVERWRITE同时运行会发生什么。请帮助我理解在下面的场景中hive查询返回的内容。
首先运行查询,在查询运行时,INSERT OVERWRITE同一个表。
首先运行INSERT OVERWRITE,同时覆盖,使用SELECT从同一个表中提取数据。
我们是否会获取旧数据,新数据,混合数据,无数据或不可预测的数据?
我正在使用MapR 4.0.1,Hive 0.13。
致以最诚挚的问候,
赖安
答案 0 :(得分:1)
阅读Hive Locking:
对于非分区表,锁定模式非常直观。在读取表时,获取S锁,而为所有其他操作获取X锁(插入表,更改任何类型的表等)。
因此SELECT和INSERT获取不兼容的锁,因此它们永远不会并行运行。一个人将首先获得锁定,另一个人将等待。
对于分区表,事情有点复杂,因为锁获取是分层的(表上的S,分区上的S / X)。阅读链接。