使用scala-native进行内存数据处理

lis*_*sak 5 scala-native

我想知道是否有可能利用scala-native来执行大型内存中的工作.

例如,假设您有一个需要150GB RAM的spark作业,因此您必须在Spark集群中运行5x30GB执行程序,因为JVM垃圾收集器无法赶上堆大于此的堆.

想象一下,99%的正在处理的数据都Strings在集合中.

你认为scala-native会对你有帮助吗?我的意思是,作为Spark的替代品?

它是如何对待的String?它是否也有这个开销,因为jvm将它视为类?

在JVM的情况下,内存("堆")GC限制为经典的30GB?我最终还会达到30GB的限制吗?

或者这通常是个坏主意?使用scala-native进行内存数据处理.我的猜测是scala-offheap是更好的方式.

gri*_*der 0

目前这是一个坏主意,因为 Scala Native 尚未准备好用于生产使用。此外,Scala Native 使用垃圾收集器(现在为 BOEHM),并且会遇到与 JVM 相同的问题,但使用 Scala Native,您可以尝试手动内存管理。