如何组织 Apache Spark 项目

问题描述 投票:0回答:3

我是 Spark 新手,我想了解如何最好地设置项目。我将使用 Maven 进行构建(包括测试)。

我编写了第一个 Spark 应用程序,但要在开发期间启动它,我必须以本地模式运行:

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

但是,如果我想将其提交到集群,它仍会以本地模式运行,这是我不希望的。

所以我必须在部署之前更改代码,构建 jar 并将其提交到集群。显然这不是最好的方法。

我想知道最佳实践是什么?您是否以某种方式将主 URL 外部化?

java apache-spark apache-spark-sql
3个回答
0
投票

通常您只想在测试用例中以本地模式运行 Spark。所以你的主要工作不应该与 ant 本地模式相关联。

此外,spark 接受的所有参数都应该来自命令行。例如,应用程序名称、主控等应仅从命令行获取,而不是硬编码。

尝试将数据帧操作保留在小函数中,以便可以独立测试它们。


0
投票

您需要使用

spark-submit
脚本。 您可以在此处找到更多文档https://spark.apache.org/docs/latest/submitting-applications.html


0
投票

我将拥有将 SparkContext 作为参数(甚至可能是隐式参数)的所有方法。接下来,我将使用 Maven 配置文件来定义 SparkContext(测试/产品)的参数,或者编程参数。

一种简单的替代方法是以编程方式为您的(产品)主方法(集群模式)定义一个 SparkContext,并为您的测试定义一个单独的 SparkContext(本地模式)

© www.soinside.com 2019 - 2024. All rights reserved.