У меня есть набор тестов, который выполняет несколько тестов искровых модулей.Каждый из этих тестов имеет один и тот же базовый контекст искры.Во время выполнения этих тестов я проверяю, существует ли БД, и, если нет, создаю его:
def dbExists(db: String) = spark.sql(s"show databases like '$db'").count > 0
if (!dbExists(db)) spark.sql(s"create database $db")
. По некоторым причинам один из тестов не проходит.Отладка Я видел, что для определенного БД dbExists(db)
возвращает значение false, и команда создания завершается неудачно с
ERROR RetryingHMSHandler:159 - AlreadyExistsException(message:Database db already exists)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.create_database(HiveMetaStore.java:891)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
. Каждый раз при запуске теста я очищаю среду, запускающую drop database db cascade
для каждого БД, который не является значением по умолчанию.,Единственное объяснение, которое я могу дать, состоит в том, что некоторые поврежденные метаданные находятся в каталоге, и spark sql считает, что база данных существует, а ее больше нет.
Проблема возникает также внутри контейнера со свежим клоном gitпроект, что означает, что это не предыдущий запуск приложения, который может загрязнить окружающую среду.
Я запускаю с включенной поддержкой кустов.