【问题标题】:How to organize a Apache Spark Project如何组织 Apache Spark 项目
【发布时间】:2017-09-22 13:42:23
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 当你提交到集群时,它也运行在客户端模式。

标签: java hadoop apache-spark spark-dataframe


【解决方案1】:

通常您只想从测试用例以本地模式运行 spark。所以你的主要工作不应该关联蚂蚁本地模式。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-07-06
        • 2021-05-09
        • 2012-06-02
        • 2016-04-19
        • 2016-12-20
        • 2013-11-01
        • 2012-04-07
        • 2011-02-19
        • 1970-01-01
        相关资源
        最近更新 更多