为什么Spark会调用“main”而不是像“SparkJob”这样的界面?

时间:2017-07-23 01:38:20

标签: apache-spark

Spark在指定的类上调用main方法,并且该main方法应该构造一个SparkContext或SparkSession。未明确指定的配置(如主URL)将来自命令行或配置文件中传递的属性。

我想知道的是:为什么Spark会寻找main方法,而不是使用SparkJob这样的接口,而run方法需要SparkSession作为注入参数?这是在容器内运行的其他形式的托管代码的常见约定;您仍然可以使用main方法构建并在本地模式下注入SparkSession以进行单元测试。

换句话说,为什么不呢?

public class MySparkJob implements SparkJob {
  public void run(SparkSession spark) {
  }
}

而不是:

public class MySparkJob {
  public static void main(String[] args) {
     SparkSession spark = ...
  }
}

0 个答案:

没有答案