hive - 如果同时运行 hive(0.13) SELECT 和 INSERT OVERWRITE 会发生什么

标签 hive

我想知道如果同时运行 hive SELECT 和 INSERT OVERWRITE 会发生什么。请帮助我了解在以下情况下 hive 查询将返回什么。

首先运行查询,在查询运行时,INSERT OVERWRITE 同一个表。

先运行INSERT OVERWRITE,覆盖时,用SELECT从同一张表中拉取数据。

我们会得到旧数据、新数据、混合数据、空数据还是不可预测的数据?

我正在使用 MapR 4.0.1,Hive 0.13。

此致,

瑞安

最佳答案

阅读 Hive Locking :

For a non-partitioned table, the lock modes are pretty intuitive. When the table is being read, a S lock is acquired, whereas an X lock is acquired for all other operations (insert into the table, alter table of any kind etc.)



因此 SELECT 和 INSERT 获取不兼容的锁,因此它们永远无法并行运行。一个将首先获取锁,另一个将等待。

对于分区表,事情有点复杂,因为获取的锁是分层的(表上的 S,分区上的 S/X)。阅读链接。

关于hive - 如果同时运行 hive(0.13) SELECT 和 INSERT OVERWRITE 会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33230686/

相关文章:

mapreduce - Hive-Tez 上的 Map-Reduce 日志

csv - 从CSV文件创建Hive表时的唯一ID

hive - 如何在 Hive 中分组集后 reshape 数据?

java - 使用 Spark Dataframe 的 Hive 分区中缺少日期前导零

ubuntu - 配置单元查询HDFS数据时出现异常

hadoop - 将Hive中 “select”的输出作为Hadoop jar输入文件的输入

sql - Hive - 按年分区

apache - java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

在 Hive 中将数据拆分为多列

java - Spark Hive 和 Datanucleus