В Apache Spark SQL: как закрыть соединение с хранилищем метаданных из HiveContext

В моем проекте есть модульные тесты для разных конфигураций HiveContext (иногда они находятся в одном файле, поскольку сгруппированы по функциям).

После обновления до Spark 1.4 я сталкиваюсь с множеством проблем типа «java.sql.SQLException: другой экземпляр Derby, возможно, уже загрузил базу данных», поскольку исправление не позволяет этим контекстам совместно использовать одно и то же хранилище метаданных. Поскольку это не чисто, чтобы возвращать состояние сингла для каждого теста. Мой единственный вариант - «переработать» каждый контекст, прервав предыдущее соединение с хранилищем метаданных Derby. Есть ли способ сделать это?


person tribbloid    schedule 24.08.2015    source источник


Ответы (1)


В scala я просто использовал FunSuite для модульных тестов вместе с трейтом BeforeAndAfterAll. Затем вы можете просто запустить свой sparkContext в beforeAll, создать из него свой HiveContext и закончить его следующим образом:

  override def afterAll(): Unit = {
    if(sparkContext != null)
      sparkContext .stop()
  }

Из того, что я заметил, он также закрывает прикрепленный к нему HiveContext.

person TheMP    schedule 27.08.2015
comment
Большое спасибо! Позвольте мне сначала проверить это. - person tribbloid; 06.09.2015