我正在爲我的火花應用程序編寫單元測試,但遇到了問題。理想的情況下,我想有一個Before
和After
方法,我開始和停止火花(而不是在單元測試方法本身)。無法在單元測試的前後方法中啓動/停止火花
下面的實現工作,我可以在測試開始時聲明SparkConf
和JavaSparkContext
,然後在最後執行sc.close()
。
@Test
public void testMethod(){
SparkConf conf = new SparkConf().setMaster("local").setAppName("testGeoHashAggregation");
JavaSparkContext sc = new JavaSparkContext(conf);
// yadda yadda yadda
//tests here
sc.close()
}
但我想設置它,以便開始和結束都有自己的方法
@Before
public void init(){
SparkConf conf = new SparkConf().setMaster("local").setAppName("testGeoHashAggregation");
JavaSparkContext sc = new JavaSparkContext(conf);
}
@After
public void close(){
sc.close();
}
任何想法,爲什麼後者不工作?我將遇到一個異常,一些對象不可序列化。
第二個代碼看起來很奇怪 - 我想'JavaSparkContext'不僅在init()中,而且在類中。如果序列化的問題與某個對象有關 - 只需實現Serializable接口。如果您在JavaSparkContext序列化過程中遇到問題,請在此字段中添加瞬變。 類似於 - > 'public class YourClass { private transient JavaSparkContext sc; ....所有的代碼都在這之前......之後...... – VladoDemcak