В Apache Spark SQL, Как да затворя връзката с metastore от HiveContext

Моят проект има модулни тестове за различни конфигурации на HiveContext (понякога те са в един файл, тъй като са групирани по функции.)

След надграждане до Spark 1.4 срещам много проблеми с „java.sql.SQLException: Друг екземпляр на Derby може вече да е стартирал базата данни“, тъй като корекция прави тези контексти неспособни да споделят едно и също metastore. Тъй като не е чисто да се връща състоянието на сингълтон за всеки тест. Единствената ми опция се свежда до „рециклиране“ на всеки контекст чрез прекратяване на предишната връзка с Derby metastore. Има ли начин това да стане?


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


Отговори (1)


Ами в scala току-що използвах FunSuite за Unit Tests заедно с функцията 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