从没有 SparkContext 的列表创建 JavaRDD

Create JavaRDD from List without SparkContext

我正在围绕一个 spark 项目编写一些 JUnit 单元测试。

我正在尝试测试的函数之一接受 JavaRDD 作为参数,我想以编程方式创建该 JavaRDD,并且从 List 转换为 RDD 似乎是最合乎逻辑的方法。

How to convert List to JavaRDD suggests that I use JavaSparkContext.parallelize(List)。但是,鉴于我在单元测试中这样做,我不想实例化 SparkContext 对象。

这不是一个真正的选项,您需要使用 Spark 上下文来创建 RDD。一种选择是使用 spark-testing-base (its also on spark packages) (我是作者)创建用于测试用途的 spark 上下文。如果有帮助,我可以扩展它以提供一个基础 class,它也提供 JavaSparkContext?

最直接的解决方案就是在本地创建一个 JavaSparkContext。

    JavaSparkContext context = new JavaSparkContext("local[4]", "test"); 
    //test code here
    context.stop();

这有缺点,因为它会导致您的测试在无法创建上下文的情况下失败。