Блокировка улья в транзакционной таблице, используемой в соединениях - PullRequest
0 голосов
/ 09 марта 2020

Мы сталкиваемся с этой странной проблемой с Hive в HDInsight 4.0 - Hive 3.1.0. По умолчанию Hive настроен на обработку всех таблиц как транзакционных. У нас есть 3 таблицы, которые объединяются:

  • a
  • b
  • c

На начальном этапе 2 этих таблиц были разделены на год / месяц (б, c). Теперь мы перераспределили их по годам / месяцам / дням (b, c). Который генерирует количество около 200 разделов для каждой таблицы (b, c).

Теперь, если мы сделаем выбор из объединения b, объединение c получит ошибку блокировки транзакции. Тем не менее, если я выбираю Выбрать объединение b - работает нормально, если я делаю Выбрать объединение c работает нормально.

Кроме того, если я ограничиваю в предложении объединения только одну из недавно секционированных таблиц для сканирования только один раздел, такой как

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...