联接中使用的事务表中的配置单元锁定

zzlelutf  于 2021-06-25  发布在  Hive
关注(0)|答案(0)|浏览(250)

hdinsight 4.0上的配置单元(hive3.1.0)遇到了一个奇怪的问题,默认情况下,配置单元被设置为将所有表作为事务处理。我们有3个表连接在一起:

b
c
在最初的第2阶段,这些表按年/月(b,c)划分。现在,我们已经按年/月/日(b,c)重新划分了它们。它为每个表(b,c)生成大约200个分区。
现在,如果我们从a join b join c中选择,我们会得到一个事务锁错误。但是,如果我选择了一个连接b-工作正常,如果我选择了一个连接c工作正常。
另外,如果我在join子句中限制一个新分区的表只扫描一个分区 Select a join b on 1=1 join c on 1=1 and c.YEAR=2019 AND c.MONTH=1 它也很好用。
似乎连接必须扫描的分区数量的增加,或者类似的情况阻止了配置单元对这些表进行读取锁定。。。这很奇怪,因为这些表除了同一个数据库之外什么都不共享。
有什么想法吗?
完全错误:

java.sql.SQLException: Error while processing statement: FAILED: Error in acquiring locks: Error communicating with the metastore
at org.apache.hive.jdbc.HiveStatement.waitForOperationToComplete(HiveStatement.java:401)
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:266)
at com.hortonworks.hivestudio.hive.HiveJdbcConnectionDelegate.execute(HiveJdbcConnectionDelegate.java:56)
at com.hortonworks.hivestudio.hive.actor.StatementExecutor.runStatement(StatementExecutor.java:93)
at com.hortonworks.hivestudio.hive.actor.StatementExecutor.handleMessage(StatementExecutor.java:74)
at com.hortonworks.hivestudio.hive.actor.HiveActor.onReceive(HiveActor.java:45)
at akka.actor.UntypedAbstractActor$$anonfun$receive$1.applyOrElse(AbstractActor.scala:243)
at akka.actor.Actor.aroundReceive(Actor.scala:514)
at akka.actor.Actor.aroundReceive$(Actor.scala:512)
at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:132)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:527)
at akka.actor.ActorCell.invoke(ActorCell.scala:496)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
at akka.dispatch.Mailbox.run(Mailbox.scala:224)
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题