最近我一直在运行一个记忆重的火花工作,并开始怀疑火花的存储水平.我坚持使用我的一个RDD,因为它使用了两次StorageLevel.MEMORY_AND_DISK.我在工作期间获得了OOM Java堆空间.然后,当我完全删除了持久性时,该工作已经成功完成.
我一直认为它MEMORY_AND_DISK基本上是一个完全安全的选项 - 如果你的内存不足,它会将对象溢出到磁盘,完成.但现在它似乎并没有像我预期的那样真正发挥作用.
这导致两个问题:
MEMORY_AND_DISK在执行程序内存不足时将对象溢出到磁盘,使用DISK_ONLY模式是否有意义(除了一些非常具体的配置spark.memory.storageFraction=0)?MEMORY_AND_DISK在执行程序内存不足时将对象溢出到磁盘,如何通过删除缓存来解决OOM问题?我错过了什么,问题实际上是在其他地方吗?我想询问是否可以保存在参数调整期间创建的所有模型,例如tuneParams功能.我想为每个超参数集的每个交叉验证折叠保存模型.
我可以看到有models两个resample和benchmark函数的参数,但我找不到一个tuneParams或类似的功能,我无法找到一种方法来模仿这种行为使用其他功能(我是mlr的新手).
有没有办法做到这一点?
PS我知道这可能听起来很疯狂,但我需要它进行一些内部验证.
PS2不幸的是,似乎还没有"mlr"标签,我没有足够的代表来创建一个.
我有与此处描述的完全相同的问题: Spark notworking with pureconfig。上述问题的唯一答案似乎是合理的,但我正在使用 Maven 而不是 sbt,并且我无法将发布的解决方案从 sbt 转换为 Maven。
我尝试过类似以下的操作:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<relocations>
<relocation>
<pattern>com.chuusai:shapeless_2.11:2.3.2</pattern>
<shadedPattern>com.matek.shaded.com.chuusai:shapeless_2.11:2.3.2</shadedPattern>
</relocation>
<relocation>
<pattern>com.chuusai:shapeless_2.11:2.0.0</pattern>
<shadedPattern>com.matek.shaded.com.chuusai:shapeless_2.11:2.0.0</shadedPattern>
</relocation>
<relocation>
<pattern>com.github.pureconfig</pattern>
<shadedPattern>com.matek.shaded.com.github.pureconfig</shadedPattern>
<excludes>
<exclude>com.chuusai:shapeless_2.11:2.3.2</exclude>
</excludes>
<includes>
<include>com.matek.shaded.com.chuusai:shapeless_2.11:2.3.2</include>
</includes>
</relocation>
</relocations>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但毫不奇怪,这不起作用(我什至不确定它是否正确)。如何指定 Maven Shade 插件配置以使其与 Spark Submit 一起使用?