【发布时间】:2019-02-07 11:18:39
【问题描述】:
为了更快地进行测试(无需打包和部署到集群),我一直在努力尝试在本地运行复杂的 spark 应用程序。
一些上下文:
- 此 spark 应用程序与 Datastax Enterprise 版本的 Cassandra 及其分布式文件系统接口,因此需要提供一些明确的 jar(在 Maven 中不可用)
- 这些 jar 在我的本地计算机上可用,为了“解决”这个问题,我尝试将它们放在 SPARK_HOME/jars 中,以便它们会自动添加到类路径中
- 我尝试通过将所需的配置设置放在 SPARK_HOME/conf 下的 spark-defaults.conf 中来执行类似的操作
- 在构建此应用程序时,我们不构建 uber jar,而是使用 --jars 在服务器上执行 spark-submit
我面临的问题是,当我通过 IDE 运行 Spark 应用程序时,它似乎没有从 SPARK_HOME 目录(配置或 jars)中获取任何这些附加项目。我花了几个小时试图让配置项工作,并最终在我的测试用例中将它们设置为 System.property 值,然后再启动 spark 会话以便 Spark 将它们拾取,因此可以忽略配置设置。
但是,我不知道如何为供应商特定的 jar 文件重现此内容。有没有一种简单的方法可以模拟 spark-submit 所做的 --jars 行为,并且一些家庭使用这个 jar 值设置我的 spark 会话?注意:我在我的代码中使用以下命令来启动 spark 会话:
SparkSession.builder().config(conf).getOrCreate()
补充信息,如果有帮助的话:
- 我在 SPARK_HOME 本地拥有的 Spark 版本与我的代码使用 Maven 编译的版本相同。
- 我问了另一个与配置类似的问题:Loading Spark Config for testing Spark Applications
- 当我在我的应用程序中打印 SPARK_HOME 环境变量时,我得到了正确的 SPARK_HOME 值,所以我不确定为什么没有从这里获取配置或 jar 文件。从我的 IDE 运行应用程序时,是否有可能没有选择 SPARK_HOME 环境变量并使用所有默认值?
【问题讨论】:
标签: maven apache-spark