我是Spark的新手,我想了解如何最好地设置项目。我将使用Maven来建造包括测试。
我写了我的第一个火花应用程序,但是要在开发过程中启动它,我必须在本地模式下运行:
SparkSession spark = SparkSession.builder()
.appName("RDDTest")
.master("local")
.getOrCreate();
但是,如果我想将其提交给集群,它将以我不想要的本地模式运行。
因此,我必须在部署前更改代码,构建JAR并将其提交给群集。显然,这不是最好的方法。
我想知道最好的做法是什么?您以某种方式外部化主URL吗?
通常,您只想从测试用例中以本地模式运行火花。因此,您的主要工作不应与蚂蚁局部模式相关联。
另外,Spark接受的所有参数都应来自命令行。例如,应用程序名称,主等应仅从命令行中获取而不是硬编码。
尝试将数据帧操作保持在较小的功能中,以便可以独立测试。
您需要使用spark-submit
脚本。您可以在此处找到更多文档
我将有所有方法将SparkContext作为参数(甚至隐式参数)。接下来,我要么使用Maven配置文件来定义SparkContext(test/prod)或编程参数的参数。
一个简单的替代方案只能是编程为您的(prod)Main方法(群集模式)定义一个SparkContext,而一个单独的测试(本地模式)