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 = ...
}
}