Scala 什么';存储运行时填充的巨大地图对象以供其他工具重用的最佳方法是什么?

Scala 什么';存储运行时填充的巨大地图对象以供其他工具重用的最佳方法是什么?,scala,intellij-idea,sbt,runtime,Scala,Intellij Idea,Sbt,Runtime,我正在编写一个Scala工具,它将约300个JSON模式文件编码为不同格式的文件,并将它们保存到磁盘。这些模式是我稍后实例化JSON数据文件所需要的,或者更好,我不需要所有模式,只需要每个模式的几个字段。 我认为最好的解决方案可能是填充一个只包含我需要的信息的Map对象(同时该工具对模式进行编码)。然后(在该工具的另一次运行中)重新使用已编译和填充的映射对象 我有两个问题: 1.这真的是最有效的解决方案吗?及 2.如何将运行时创建的映射对象保存在磁盘上,作为一个文件,以后可以使用我的其余代码构建

我正在编写一个Scala工具,它将约300个JSON模式文件编码为不同格式的文件,并将它们保存到磁盘。这些模式是我稍后实例化JSON数据文件所需要的,或者更好,我不需要所有模式,只需要每个模式的几个字段。 我认为最好的解决方案可能是填充一个只包含我需要的信息的Map对象(同时该工具对模式进行编码)。然后(在该工具的另一次运行中)重新使用已编译和填充的映射对象

我有两个问题:

1.这真的是最有效的解决方案吗?及

2.如何将运行时创建的映射对象保存在磁盘上,作为一个文件,以后可以使用我的其余代码构建/执行

我读过几篇关于序列化和存储对象的文章,但我不完全确定这些是否与我需要的相同。另外,我不确定这是最好的解决方案,我想听听比我更有经验的人的意见

我想要实现的是一个优雅的解决方案,它允许我从另一个工具生成的映射中查找值


编译/构建/执行的整个过程有时仍然让我感到困惑,因此,如果问题微不足道,我深表歉意。

回答您的问题

  • 考虑到文件数量和遍历量,我认为使用嵌入式KV存储将更有效。 这里有一个关于“如何使用RocksJava”的小Wiki。你可以把它看作是一个千伏商店。
  • 您可以使用下面的引用对Scala中的对象进行序列化和反序列化,并将其作为键值对放入RocksDB中,如我在注释中所述。

  • 关于如何使用rocksDB,构建中的以下依赖项就足够了:
    “org.rocksdb”%“rocksdbjni”%“5.17.2”


    谢谢