2015-08-24 9 views
6

Mój projekt ma testów jednostkowych dla różnych konfiguracjach HiveContext (czasami są w jednym pliku, ponieważ są one pogrupowane według funkcji.)W Apache Spark SQL Jak zamknąć połączenie metastore z HiveContext

Po uaktualnieniu do Spark 1.4 spotykam dużo "java.sql.SQLException": Inna instancja Derby mogła już uruchomić problemy z bazą danych, ponieważ łatka sprawia, że ​​te konteksty nie mogą współdzielić tego samego metastore. Ponieważ nie jest czysty, aby przywrócić stan pojedynczego dla każdego testu. Moja jedyna opcja sprowadza się do "recyklingu" każdego kontekstu przez zakończenie poprzedniego połączenia metastore Derby. Czy jest jakiś sposób na zrobienie tego?

Odpowiedz

1

Dobrze w scala Właśnie użyłem FunSuite do testów jednostkowych wraz z cechą PrzedAndAfterAll. Następnie można po prostu init, swoją sparkContext w beforeAll, tarło swoją HiveContext od niego i zakończyć ją w ten sposób:

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

Z tego co zauważyłem to również zamyka HiveContext z nim związane.

+0

Wielkie dzięki! Pozwól mi najpierw przetestować. – tribbloid