我有一些数据,我想使用两个immutable.Maps进行建模,每个都有~50个向量,每个向量有~20个对象(每个都有几个整数和一些短字符串),总计~2000个对象。
我不会添加或删除这些数据中的任何内容,但我会用地图和过滤器查询那些(我正在编写播放服务器)。由于不会因为错误的写入而担心数据完整性,并且看到数据集不是那么大,我想我只会使用scala集合而不是某些外部数据库。
我采取了最简单的方法:我在源文件中写了两个巨大的硬编码地图。文件的大小(仅包含具有两个地图的对象)大约为350k。 Ensime没有警告我任何错误,所以直到我收到错误消息sbt compile
时才运行Could not write class mypackage/myBigListOfStuffs$ because it exceeds JVM code size limits. Method scala/package$'s code too large!
解决此限制的最快方法是什么? 启动时间无关紧要,因为这将是一个服务器,我希望这个方法没有太多的麻烦。
提前致谢!
答案 0 :(得分:3)
您可以将数据写入单独的JSON文件,然后使用Jackson module for Scala对其进行反序列化。
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
val obj = mapper.readValue[Map[String, Object]](jsonString)