2015-08-24 7 views
6

Mein Projekt hat Unit-Tests für verschiedene HiveContext Konfigurationen (manchmal sind sie in einer Datei, wie sie von Funktionen gruppiert sind.)In Apache Spark-SQL, Wie Metastore Verbindung von HiveContext

Nach dem Upgrade 1.4 Spark I begegnen schließen eine Menge von 'java.sql.SQLException: Eine andere Derby-Instanz hat möglicherweise bereits die Probleme der Datenbank gestartet, da ein Patch diese Kontexte nicht in die Lage versetzt, dieselbe Metastruktur zu teilen. Da ist es nicht sauber, um den Zustand eines Singleton für jeden Test wiederherzustellen. Meine einzige Option besteht darin, jeden Kontext zu "recyceln", indem die vorherige Derby-Metastore-Verbindung beendet wird. Gibt es eine Möglichkeit, dies zu tun?

Antwort

1

Nun in Scala Ich habe gerade FunSuite für Unit Tests zusammen mit BeforeAndAfterAll Merkmal verwendet. Dann können Sie einfach Ihre sparkContext in beforeAll init, laichen Ihre HiveContext von ihm und es so beenden:

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

Von dem, was ich bemerkt habe es auch ein HiveContext daran befestigt wird geschlossen.

+0

Vielen Dank! Lass es mich zuerst testen. – tribbloid