2015-08-24 5 views
6

Il mio progetto ha unit test per le diverse configurazioni HiveContext (a volte si trovano in un unico file in cui sono raggruppati per funzioni.)In Apache Spark SQL, come chiudere il collegamento metastore da HiveContext

Dopo l'aggiornamento a Spark 1.4 che incontro un sacco di 'java.sql.SQLException: un'altra istanza di Derby potrebbe aver già avviato i problemi del database, poiché una patch rende questi contesti incapaci di condividere lo stesso metastore. Dal momento che non è pulito per ripristinare lo stato di un singleton per ogni test. La mia unica opzione si riduce a "riciclare" ogni contesto terminando la precedente connessione metastore Derby. C'è un modo per fare questo?

risposta

1

Bene in scala ho appena usato FunSuite per i test unitari insieme con il tratto BeforeAndAfterAll. Poi si può solo init tua sparkContext in beforeAll, deporre le uova tua HiveContext da esso e finire in questo modo:

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

Da quello che ho notato che chiude anche una HiveContext collegato ad esso.

+0

Grazie mille! Fammi provare prima. – tribbloid