IntelliJ中的独立Spark应用程序

时间:2019-07-29 18:20:04

标签: apache-spark intellij-idea yarn

我正在尝试在本地服务器上运行Spark应用程序(用Scala编写)以进行调试。似乎YARN是我在sbt构建定义中使用的spark(2.2.1)版本中的默认设置,并且根据我不断得到的错误,没有spark / YARN服务器在监听:

Client:920 - Failed to connect to server: 0.0.0.0/0.0.0.0:8032: retries get failed due to exceeded maximum allowed retries number

根据netstat的确,我的本地服务器上确实没有处于侦听状态的端口8032。

通常如何以一种绕过此问题的方式在本地运行我的spark应用程序?我只需要应用程序处理少量数据以进行调试,因此我希望能够在本地运行,而不必依赖本地服务器上的特定SPARK / YARN安装和设置-这将是理想的调试设置。

有可能吗?

我的sbt定义已经引入了所有必要的spark和spark.yarn jar。在IntelliJ之外的sbt中运行相同项目时,也会重现该问题。

2 个答案:

答案 0 :(得分:2)

您可以将此属性添加到调试配置中的VM选项中,而不是在代码内部进行硬编码

-Dspark.master=local[2]

答案 1 :(得分:1)

如果您必须使用微不足道的数据测试管道,则可以使用@RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = MyProcessor.class, webEnvironment = SpringBootTest.WebEnvironment.NONE) @TestPropertySource(properties = { "--spring.profiles.active=" }) 以本地模式提交spark应用程序。

完整代码:

.master("local[*]")

对于val spark = SparkSession .builder .appName("myapp") .master("local[*]") .getOrCreate() ,请使用spark-submit作为参数之一。引用此:https://spark.apache.org/docs/latest/submitting-applications.html

注意:不要在您的代码库中硬编码母版,请始终尝试从命令行提供这些变量。这使得应用程序可用于本地/测试/ mesos / kubernetes / yarn /其他任何地方。