2017-03-16 6 views
0

2つのimmutable.Mapsを使用してモデル化したいデータがあります。それぞれに〜50個のベクトルがあり、それぞれに〜20個のオブジェクトその中には数個の整数といくつかの短い文字列があり、合計2000個のオブジェクトがあります。(Scala)大きなハードコーディングされたコレクション(〜2000オブジェクト)を作成する方法

これらのデータを追加したり削除したりすることはありませんが、地図やフィルタを使用してこれらのデータを多くクエリしています(私はプレイサーバーを作成しています)。悪い書き込みからのデータの整合性についての心配がなく、データセットがそれほど大きくないことを見るので、私はいくつかの外部データベースの代わりにスカラコレクションを使用するだけであると考えました。

私は最も単純な方法を取った:ソースファイルに2つの巨大なハードコーディングされたマップを書きました。ファイルのサイズ(2つのマップを持つオブジェクトのみを含む)は約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) 
関連する問題