我在机器上使用sbt组装Spark时遇到问题。
尝试在不分配额外内存的情况下进行组装会导致垃圾回收器用完或超时。在我尝试过的不同时间,确切的问题有所不同。但是,由于sbt无法将-Xmx或-Xms识别为命令,因此任何尝试通过Xmx或Xms修改分配的内存的尝试,无论是给予更多还是限制,都将失败。

这是我一直在尝试的一种命令示例(来自Spark的源目录):

sbt -Xmx2g assembly

这是我收到的错误:
java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError: GC overhead limit exceeded
Use 'last' for the full log.
Not a valid command: Xmx2g
Not a valid project: Xmx2g
Expected ':' (if selecting a configuration)
Not a valid key: Xmx2g
Xmx2g
     ^

我正在运行64位Java版本1.8.0_20。

最佳答案

检查文档:Building Spark with Maven

设置Maven的内存使用情况

您需要通过设置MAVEN_OPTS将Maven配置为使用比平时更多的内存。我们建议以下设置:

export MAVEN_OPTS =“-Xmx2g -XX:MaxPermSize = 512M -XX:ReservedCodeCacheSize = 512m”

然后,您可以使用以下命令构建它:

mvn -DskipTests package

08-18 12:18