2017-03-16 77 views
0

我有一些數據,我想使用兩個immutable.Maps進行建模,每個具有〜50個矢量,每個矢量都有〜20個對象(每個其中有幾個整數和一些短串),共計約2000個對象。(Scala)如何創建大型硬編碼集合(〜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!

會是什麼來解決此限制的最快方法? 啓動時間並不重要,因爲這將是一個服務器,我希望這個方法沒有太多的麻煩。

在此先感謝!

回答

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)