如何组织apachespark项目

yzxexxkh  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(257)

我是新的Spark,我想了解如何最好地设置一个项目。我将使用maven进行构建,包括测试。
我编写了第一个spark应用程序,但要在developent期间启动它,必须在本地模式下运行:

SparkSession spark = SparkSession.builder()
                                  .appName("RDDTest")
                                  .master("local")
                                  .getOrCreate();

但是,如果我想将它提交到集群,它将仍然以我不希望的本地模式运行。
因此,我必须在部署之前更改代码,构建jar并将其提交到集群。显然这不是最好的方法。
我想知道最好的做法是什么?你是否以某种方式外部化了主url?

np8igboo

np8igboo1#

你需要使用 spark-submit 脚本。你可以在这里找到更多的文档https://spark.apache.org/docs/latest/submitting-applications.html

ss2ws0br

ss2ws0br2#

我会有所有的方法以sparkcontext作为参数(甚至可能是隐式参数)。接下来,我要么使用maven概要文件来定义sparkcontext(test/prod)的参数,要么使用程序参数。
一个简单的替代方法就是通过编程为(prod)main方法(集群模式)定义一个sparkcontext,为测试单独定义一个sparkcontext(本地模式)

ig9co6j1

ig9co6j13#

通常,您只希望在本地模式下从测试用例运行spark。所以你的主要工作不应该有蚂蚁本地模式。
另外,spark接受的所有参数都应该来自命令行。例如,应用程序名、主机名等应该只从命令行获取,而不是硬编码。
尽量将Dataframe操作保持在小函数中,以便可以独立测试。

相关问题