我是新的Spark,我想了解如何最好地设置一个项目。我将使用maven进行构建,包括测试。
我编写了第一个spark应用程序,但要在developent期间启动它,必须在本地模式下运行:
SparkSession spark = SparkSession.builder()
.appName("RDDTest")
.master("local")
.getOrCreate();
但是,如果我想将它提交到集群,它将仍然以我不希望的本地模式运行。
因此,我必须在部署之前更改代码,构建jar并将其提交到集群。显然这不是最好的方法。
我想知道最好的做法是什么?你是否以某种方式外部化了主url?
3条答案
按热度按时间np8igboo1#
你需要使用
spark-submit
脚本。你可以在这里找到更多的文档https://spark.apache.org/docs/latest/submitting-applications.htmlss2ws0br2#
我会有所有的方法以sparkcontext作为参数(甚至可能是隐式参数)。接下来,我要么使用maven概要文件来定义sparkcontext(test/prod)的参数,要么使用程序参数。
一个简单的替代方法就是通过编程为(prod)main方法(集群模式)定义一个sparkcontext,为测试单独定义一个sparkcontext(本地模式)
ig9co6j13#
通常,您只希望在本地模式下从测试用例运行spark。所以你的主要工作不应该有蚂蚁本地模式。
另外,spark接受的所有参数都应该来自命令行。例如,应用程序名、主机名等应该只从命令行获取,而不是硬编码。
尽量将Dataframe操作保持在小函数中,以便可以独立测试。