我正在围绕一个Spark项目编写一些JUnit单元测试。
我尝试测试的一个函数接受JavaRDD作为参数,我想以编程方式创建该JavaRDD,从List转换为RDD似乎是最合乎逻辑的方法。
如何将List转换为JavaRDD建议我使用JavaSparkContext.并行化(List)
。然而,鉴于我在单元测试中这样做,我不想实例化SparkContext对象。
这不是一个真正的选择,你需要使用一个火花上下文来创建一个RDD。一种选择是使用spack-testing-base(它也在火花包上)(我是作者)来创建一个用于测试使用的火花上下文。如果它有帮助,我可以扩展它以提供一个提供JavaSparkContext的基类?
最直接的解决方案就是在本地创建一个JavaSparkContext。
JavaSparkContext context = new JavaSparkContext("local[4]", "test");
//test code here
context.stop();
这有缺点,因为如果无法创建上下文,它将导致您的测试失败。