![]() |
1
2
编辑 -让问题1-6消失,让它“工作”,但集群只是坐在那里说它正在“运行”第一步,但它从未完成。我错误地将步骤类型设置为“custom jar”,而不是“spark application”。在切换之后,我认为只有“问题1”的修复是相关的,而这可能已经修复了我的问题。我不得不退出下面问题2、3和5的修复,以使其与“spark应用程序”步骤一起工作,我想我也可以退出其余的步骤。 结束编辑 我花了很长时间才让它起作用。我将按顺序发布错误和修复,以防对以后的其他人有用。 问题1 无论我作为第一个试图指向MainClass的参数传入什么。。。我也犯了同样的错误。问题出在我的身材上。sbt。我(错误地)认为root中的组织和名称足以提供包前缀。 我在build中更改了mainClass。sbt将文件顶部声明的包与其中的SparkSubmit对象匹配。。。
有趣的参考,如果你想在清单和运行中设置不同的主类。。。 How to set main class in build? 问题2
我找到了这个参考。。。 https://spark.apache.org/docs/latest/submitting-applications.html#master-urls 我不知道该用哪一个,但由于EMR使用纱线,我将其设置为“纱线”。 这是错误的。 (将其保留为其生成的后续错误的记录)在SparkSubmit中。main(),我这样设置主URL。。。
问题3 主URL错误消失了,现在这是我的错误。。。
在我的身材中。sbt。。。我在libraryDependencies中将spark core和spark sql列为“提供的”。。。我不知道为什么这不能作为EMR步骤,因为集群已经加载了火花。。。但我删除了它并将其更改为。。。
注意-删除“提供”后,我出现了一个新错误,但将spark core和spark sql的版本更改为1.6.0以匹配EMR 4.3,这就消除了。 问题已解决。。。新建一个! 问题4
基本上是Akka的参考。conf迷路了。我的身材。sbt合并策略看起来像这样。。。
我把它改成这样。。。
问题5 我想在问题2中“纱线”不是正确的选择。我有这个错误。。。
我将url更改为“local[2]”。。。
没有该值的有效原因。。。不确定我到底需要多少线程。。。或者这甚至适用于。。。它是在主机中,还是在某个虚拟机中。。。我不确定。我需要更多地理解这一点,但我只是复制了这里的内容,因为。。。嗯为什么不呢? https://spark.apache.org/docs/1.6.1/configuration.html#spark-properties 需要了解这里设置了什么。 问题6 接下来是许多序列化错误。我不明白为什么,当所有这些代码作为手动spark submit或在spark shell中运行时没有任何问题。我基本上通过遍历并使每个类扩展可序列化来修复它。 结束 这就是我获得一个用scala编写并用sbt编译的工作jar的过程,它可以作为EMR spark集群中的一个步骤。我希望这能帮助其他人。 |
![]() |
amaidment · Java资源InputStream正在关闭? 7 年前 |
|
kussart · 如何压缩java应用程序以获得一个小型jar 7 年前 |
![]() |
a7emenov · 通过Jenkins在远程服务器上部署jar 7 年前 |