如何组织Apache Spark项目

时间:2017-09-22 13:42:24

标签: java hadoop apache-spark spark-dataframe

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

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

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

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

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

我想知道什么是最佳做法?你是否以某种方式外化主URL?

3 个答案:

答案 0 :(得分:0)

通常,您只想从测试用例中以本地模式运行spark。因此,您的主要工作不应该与本地模式相关联。

此外,spark接受的所有参数都应来自命令行。例如,App Name,master等应该仅从命令行获取而不是硬编码。

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

答案 1 :(得分:0)

您需要使用spark-submit脚本。 您可以在Array.prototype.filter MDN reference

找到更多文档

答案 2 :(得分:0)

我会使用所有方法将SparkContext作为参数(甚至可能是隐式参数)。接下来,我将使用Maven配置文件来定义SparkContext(test / prod)或程序参数的参数。

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