我正在尝试在本地服务器上运行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中运行相同项目时,也会重现该问题。
答案 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 /其他任何地方。